@821234877 客气了~多多交流呀
重要提示
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
1687028512 发布的帖子
-
RE: gazebo小车不动
朋友,不知道你和我是不是同样的问题,或许可以试试看
sudo apt install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-msgs ros-melodic-gazebo-plugins ros-melodic-gazebo-ros-control
参考
https://www.freesion.com/article/8223995772/
-
RE: 控制代码无法控制gazebo里的小车
通过以下命令安装ros-gazebo接口,实现ros-gazebo通信
sudo apt install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-msgs ros-melodic-gazebo-plugins ros-melodic-gazebo-ros-control
参考资料
https://www.freesion.com/article/8223995772/
问题解决
-
控制代码无法控制gazebo里的小车
分别用roslaunch启动gazebo环境,用python运行控制代码,小车不动
查看rqt_graph,三个结点gazebo、gazebo_gui、RUN互相没有连接。分别查看结点和话题信息如下:(base) xxx@xxx-virtual-machine:~$ rosnode list /RUN /gazebo /gazebo_gui /rosout
(base) xxx@xxx-virtual-machine:~$ rosnode info RUN -------------------------------------------------------------------------------- Node [/RUN] Publications: * /cmd_vel [geometry_msgs/Twist] * /rosout [rosgraph_msgs/Log] Subscriptions: * /camera/rgb/image_raw [unknown type] * /clock [rosgraph_msgs/Clock] Services: * /RUN/get_loggers * /RUN/set_logger_level contacting node http://xxx-virtual-machine:39375/ ... Pid: 116647 Connections: * topic: /clock * to: /gazebo (http://xxx-virtual-machine:42671/) * direction: inbound * transport: TCPROS
(base) xxx@xxx-virtual-machine:~$ rosnode info gazebo -------------------------------------------------------------------------------- Node [/gazebo] Publications: * /clock [rosgraph_msgs/Clock] * /gazebo/link_states [gazebo_msgs/LinkStates] * /gazebo/model_states [gazebo_msgs/ModelStates] * /gazebo/parameter_descriptions [dynamic_reconfigure/ConfigDescription] * /gazebo/parameter_updates [dynamic_reconfigure/Config] * /rosout [rosgraph_msgs/Log] Subscriptions: * /clock [rosgraph_msgs/Clock] * /gazebo/set_link_state [unknown type] * /gazebo/set_model_state [unknown type] Services: * /gazebo/apply_body_wrench * /gazebo/apply_joint_effort * /gazebo/clear_body_wrenches * /gazebo/clear_joint_forces * /gazebo/delete_light * /gazebo/delete_model * /gazebo/get_joint_properties * /gazebo/get_light_properties * /gazebo/get_link_properties * /gazebo/get_link_state * /gazebo/get_loggers * /gazebo/get_model_properties * /gazebo/get_model_state * /gazebo/get_physics_properties * /gazebo/get_world_properties * /gazebo/pause_physics * /gazebo/reset_simulation * /gazebo/reset_world * /gazebo/set_joint_properties * /gazebo/set_light_properties * /gazebo/set_link_properties * /gazebo/set_link_state * /gazebo/set_logger_level * /gazebo/set_model_configuration * /gazebo/set_model_state * /gazebo/set_parameters * /gazebo/set_physics_properties * /gazebo/spawn_sdf_model * /gazebo/spawn_urdf_model * /gazebo/unpause_physics contacting node http://xxx-virtual-machine:42671/ ... Pid: 114613 Connections: * topic: /rosout * to: /rosout * direction: outbound (43625 - 127.0.0.1:46868) [22] * transport: TCPROS * topic: /clock * to: /gazebo * direction: outbound * transport: INTRAPROCESS * topic: /clock * to: /rosout * direction: outbound (43625 - 127.0.0.1:47148) [44] * transport: TCPROS * topic: /clock * to: /RUN * direction: outbound (43625 - 127.0.0.1:50992) [77] * transport: TCPROS * topic: /clock * to: /gazebo (http://xxx-virtual-machine:42671/) * direction: inbound * transport: INTRAPROCESS
(base) xxx@xxx-virtual-machine:~$ rostopic info cmd_vel Type: geometry_msgs/Twist Publishers: * /RUN (http://xxx-virtual-machine:39375/) Subscribers: None
可以看到两个结点并没有互相找到
试图通过在两个终端分别使用如下命令让两个结点访问11311端口,但并没有起效export ROS_HOSTNAME=localhost export ROS_MASTER_URI=http://localhost:11311
请问应该如何操作使得控制结点与gazebo结点连接起来呢?
(不知道为什么第一个代码块不显示包裹后的效果 )
-
RE: 将需要GPU计算的代码改为用CPU计算
@1687028512
自查了一下是代码位置添加错了
不是model.load_state_dict(torch.load('weight.pt'),map_location='cpu')
而是
model.load_state_dict(torch.load('weight.pt',map_location='cpu')
问题解决
-
将需要GPU计算的代码改为用CPU计算
最近需要将一个gpu上跑的小车的控制代码改为在cpu上跑,按如上标题搜索后进行了两处更改:将torch.device改为'cpu',在torch.device的参数中添加map_location='cpu',但仍显示如下报错。
原代码配置:Ubuntu18双系统+gpu
现在我的配置:虚拟机Ubuntu18+cpu
请问是pytorch的版本不匹配吗?(base) xxx@xxx-virtual-machine:~/catkin_ws/src$ python run.py torch:1.8.2 torchvision:0.9.2 device:cpu Process Process-2: Traceback (most recent call last): File "/home/xxx/anaconda3/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap self.run() File "/home/xxx/anaconda3/lib/python3.8/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/home/xxx/catkin_ws/src/Node.py", line 263, in create_node importlib.import_module('.main', package=p[-3] + '.' + p[-2]) File "/home/xxx/anaconda3/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 783, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/home/xxx/catkin_ws/src/image/main.py", line 25, in <module> model.load_state_dict(torch.load('weight.pt'),map_location='cpu') File "/home/xxx/anaconda3/lib/python3.8/site-packages/torch/serialization.py", line 592, in load return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args) File "/home/xxx/anaconda3/lib/python3.8/site-packages/torch/serialization.py", line 851, in _load result = unpickler.load() File "/home/xxx/anaconda3/lib/python3.8/site-packages/torch/serialization.py", line 843, in persistent_load load_tensor(data_type, size, key, _maybe_decode_ascii(location)) File "/home/xxx/anaconda3/lib/python3.8/site-packages/torch/serialization.py", line 832, in load_tensor loaded_storages[key] = restore_location(storage, location) File "/home/xxx/anaconda3/lib/python3.8/site-packages/torch/serialization.py", line 175, in default_restore_location result = fn(storage, location) File "/home/xxx/anaconda3/lib/python3.8/site-packages/torch/serialization.py", line 151, in _cuda_deserialize device = validate_cuda_device(location) File "/home/xxx/anaconda3/lib/python3.8/site-packages/torch/serialization.py", line 135, in validate_cuda_device raise RuntimeError('Attempting to deserialize object on a CUDA ' RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.
-
RE: rospy路径出错
@1687028512 没太理解你的意思哈,看你的错误时rospy导入时候发生错误,错误原因在catkin_pkg,也尝试降低以下catkin_pkg的版本试试,可能要和rospy匹配。
尝试降低catkin_pkg版本
pip3 install catkin-pkg==0.4.16
得到
(base) xxx@xxx-virtual-machine:~$ pip3 install catkin-pkg==0.4.16 Collecting catkin-pkg==0.4.16 Downloading catkin_pkg-0.4.16-py3-none-any.whl (74 kB) |████████████████████████████████| 74 kB 311 kB/s Requirement already satisfied: docutils in /home/xxx/anaconda3/lib/python3.8/site-packages (from catkin-pkg==0.4.16) (0.17.1) Requirement already satisfied: pyparsing in /home/xxx/anaconda3/lib/python3.8/site-packages (from catkin-pkg==0.4.16) (2.4.7) Requirement already satisfied: python-dateutil in /home/xxx/anaconda3/lib/python3.8/site-packages (from catkin-pkg==0.4.16) (2.8.1) Requirement already satisfied: six>=1.5 in /home/xxx/anaconda3/lib/python3.8/site-packages (from python-dateutil->catkin-pkg==0.4.16) (1.15.0) Installing collected packages: catkin-pkg Attempting uninstall: catkin-pkg Found existing installation: catkin-pkg 0.4.24 Uninstalling catkin-pkg-0.4.24: Successfully uninstalled catkin-pkg-0.4.24 Successfully installed catkin-pkg-0.4.16
重新执行python命令,报错解决。
参考
https://blog.csdn.net/weixin_41560777/article/details/122744467
非常感谢小鱼的及时解答!上周因为一些事情暂停了项目,没有及时回复,在这里说声抱歉~我又肥来啦~
-
rospy路径出错
运行程序时需要import rospy,发现环境中的rospy路径在/dist-packages中,而程序是在/site-packages中找的
(base) xxx@xxx-virtual-machine:~$ python Python 3.8.8 (default, Apr 13 2021, 19:58:26) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import rospy Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module> from .client import spin, myargv, init_node, \ File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module> import roslib File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 53, in <module> import roslib.stacks # noqa: F401, I100 File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/stacks.py", line 45, in <module> import roslib.packages File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/packages.py", line 48, in <module> from catkin.find_in_workspaces import find_in_workspaces as catkin_find File "/opt/ros/melodic/lib/python2.7/dist-packages/catkin/find_in_workspaces.py", line 39, in <module> from catkin_pkg.packages import find_packages ImportError: cannot import name 'find_packages' from 'catkin_pkg.packages' (/home/xxx/anaconda3/lib/python3.8/site-packages/catkin_pkg/packages.py) >>> [1]+ 已停止 python (base) xxx@xxx-virtual-machine:~$ pip install rospy Requirement already satisfied: rospy in /opt/ros/melodic/lib/python2.7/dist-packages (1.14.13)
通过检索知道:
如果是系统自带的python,会使用dist-packages目录;
如果手动安装python,会直接使用目录site-packages
参考:https://blog.csdn.net/cc1949/article/details/78286224
请问这种情况应如何解决呢?
-
RE: 程序运行报错:module 'rospkg' has no attribute 'RosPack'
@小鱼 在 程序运行报错:module 'rospkg' has no attribute 'RosPack' 中说:
@1687028512 在 程序运行报错:module 'rospkg' has no attribute 'RosPack' 中说:
dir(rospkg)
['builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'path', 'spec']通过这一行可以看出来你的rospkg是空的,有两个办法。
- 看rospkg源码,看看为何为空
- 尝试降低rospkg版本或同时降低python版本
建议先尝试方案2,比较快
使用第二个方法,降低rospkg版本
1、卸载现版本rospkgpip uninstall rospkg
2、安装低版本rospkg
pip install rospkg==1.2.9
至于装哪个版本,我参考的是这里,显示非testing状态的版本
https://tracker.debian.org/pkg/ros-rospkg/news/?page=1
3、测试
(base) xxx@xxx-virtual-machine:~/catkin_ws/src/scripts$ python Python 3.8.8 (default, Apr 13 2021, 19:58:26) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import rospkg >>> rospkg.RosPack() <rospkg.rospack.RosPack object at 0x7f1a11689d60>
问题解决,谢谢小鱼的极速且耐心的回复!这对初学者真的非常有帮助,非常感谢!
-
RE: 程序运行报错:module 'rospkg' has no attribute 'RosPack'
@小鱼 在 程序运行报错:module 'rospkg' has no attribute 'RosPack' 中说:
@1687028512 rospkg,不是ropkg,少了个s
修改后如下
>>> rospkg.RosPack() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'rospkg' has no attribute 'RosPack'
-
RE: 程序运行报错:module 'rospkg' has no attribute 'RosPack'
@小鱼 在 程序运行报错:module 'rospkg' has no attribute 'RosPack' 中说:
@1687028512 试一下手动import看看是否有对应的包
Python 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import rospkg >>> dir(rospkg) ['InvalidManifest', 'MANIFEST_FILE', 'Manifest', 'ResourceNotFound', 'RosPack', 'RosStack', 'STACK_FILE', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 'common', 'environment', 'expand_to_packages', 'get_etc_ros_dir', 'get_log_dir', 'get_package_name', 'get_ros_home', 'get_ros_package_path', 'get_ros_paths', 'get_ros_root', 'get_stack_version_by_dir', 'get_test_results_dir', 'list_by_path', 'manifest', 'on_ros_path', 'parse_manifest_file', 'rospack', 'stack'] >>> rospkg.RosPack() <rospkg.rospack.RosPack object at 0x7f8c369d0b20>
运行结果如下
(base) xxx@xxx-virtual-machine:~/catkin_ws/src/scripts$ python Python 3.8.8 (default, Apr 13 2021, 19:58:26) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import rospkg >>> dir(rospkg) ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__'] >>> ropkg.RosPack() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'ropkg' is not defined
-
RE: 程序运行报错:module 'rospkg' has no attribute 'RosPack'
@小鱼 在 程序运行报错:module 'rospkg' has no attribute 'RosPack' 中说:
@1687028512 虽然有ROS,但是没有发现conda的环境,比较奇怪。再试试Python的
python -c "import sys; print('\n'.join(sys.path))"
运行结果如下
(base) xxx@xxx-virtual-machine:~/catkin_ws/src/scripts$ python -c "import sys; print('\n'.join(sys.path))" /opt/ros/melodic/lib/python2.7/dist-packages /home/xxx/anaconda3/lib/python38.zip /home/xxx/anaconda3/lib/python3.8 /home/xxx/anaconda3/lib/python3.8/lib-dynload /home/xxx/anaconda3/lib/python3.8/site-packages /home/xxx/anaconda3/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg
-
RE: 程序运行报错:module 'rospkg' has no attribute 'RosPack'
另,可能我给的报错信息还不够完善,在此补充一下
(base)xxx@xxx-virtual-machine:~/catkin_ws/src/scripts$ python run.py Traceback (most recent call last): File "run.py", line 6, in <module> import rospy File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module> from .client import spin, myargv, init_node, \ File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module> import roslib File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module> from roslib.launcher import load_manifest # noqa: F401 File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 48, in <module> _rospack = rospkg.RosPack() AttributeError: module 'rospkg' has no attribute 'RosPack'
-
RE: 程序运行报错:module 'rospkg' has no attribute 'RosPack'
@小鱼 在 程序运行报错:module 'rospkg' has no attribute 'RosPack' 中说:
上下文是否有ROS
运行了这两个命令,得到的结果如下
xxx@xxx-virtual-machine:~$ python3 -c "import sys; print('\n'.join(sys.path))" /opt/ros/melodic/lib/python2.7/dist-packages /usr/lib/python36.zip /usr/lib/python3.6 /usr/lib/python3.6/lib-dynload /usr/local/lib/python3.6/dist-packages /usr/lib/python3/dist-packages xxx@xxx-virtual-machine:~$ python2 -c "import sys; print('\n'.join(sys.path))" /opt/ros/melodic/lib/python2.7/dist-packages /usr/lib/python2.7 /usr/lib/python2.7/plat-x86_64-linux-gnu /usr/lib/python2.7/lib-tk /usr/lib/python2.7/lib-old /usr/lib/python2.7/lib-dynload /usr/local/lib/python2.7/dist-packages /usr/lib/python2.7/dist-packages /usr/lib/python2.7/dist-packages/wx-3.0-gtk3
从这两条结果的第一行看起来是有ROS的样子
-
程序运行报错:module 'rospkg' has no attribute 'RosPack'
在conda的base环境下运行小车控制程序
python run.py
时发生报错
AttributeError: module 'rospkg' has no attribute 'RosPack'
重新分别使用pip和pip3安装rospkg,都显示
Requirement already satisfied: rospkg in /home/xxx/anaconda3/lib/pyhon3.8/site-packages(1.40)
请教下这是什么问题呢?是因为rospkg1.4版本不稳定吗?
-
RE: gazebo仿真报错:Spawn service failed. Exiting
@小鱼 感谢小鱼的极速回复~
我的gazebo确实打开了,但因为不明的原因点击后会迅速关闭
通过关闭3D加速,目前报错仍存在,但已经打开了gazebo,谢谢!参考资料
https://www.freesion.com/article/8875920614/
-
gazebo仿真报错:Spawn service failed. Exiting
在工作空间运行
roslaunch turtlebot3_gazebo tutlebot3_world.launch
时发生报错
process[gazebo-1]: started with pid [8701] process[gazebo_gui-2]: started with pid [8706] process[spawn_urdf-3]: started with pid [8711] [gazebo-1] process has died [pid 8701, exit code 255, cmd /opt/ros/melodic/lib/gazebo_ros/gzserver -e ode /home/xxx/catkin_ws/src/turtlebot3_gazebo/worlds/trace3.world __name:=gazebo __log:=/home/xxx/.ros/log/8dc7ffd2-c2fe-11ec-99ca-000c2963bf40/gazebo-1.log]. log file: /home/xxx/.ros/log/8dc7ffd2-c2fe-11ec-99ca-000c2963bf40/gazebo-1*.log [ INFO] [1650717663.378451829]: Finished loading Gazebo ROS API Plugin. [ INFO] [1650717663.405245506]: waitForService: Service [/gazebo_gui/set_physics_properties] has not been advertised, waiting... [ERROR] [1650717665.784082290, 522.413000000]: SpawnModel: Failure - model name turtlebot3_waffle already exist. [ERROR] [1650717665.817683, 522.413000]: Spawn service failed. Exiting. [spawn_urdf-3] process has died [pid 8711, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -urdf -model turtlebot3_waffle -x -4.95 -y 1.04 -z 0.2 -R 0.0 -P 0.0 -Y 1.56 -param robot_description __name:=spawn_urdf __log:=/home/xxx/.ros/log/8dc7ffd2-c2fe-11ec-99ca-000c2963bf40/spawn_urdf-3.log]. log file: /home/xxx/.ros/log/8dc7ffd2-c2fe-11ec-99ca-000c2963bf40/spawn_urdf-3*.log VMware: vmw_ioctl_command error 无效的参数. Aborted (core dumped) [gazebo_gui-2] process has died [pid 8706, exit code 134, cmd /opt/ros/melodic/lib/gazebo_ros/gzclient __name:=gazebo_gui __log:=/home/xxx/.ros/log/8dc7ffd2-c2fe-11ec-99ca-000c2963bf40/gazebo_gui-2.log]. log file: /home/xxx/.ros/log/8dc7ffd2-c2fe-11ec-99ca-000c2963bf40/gazebo_gui-2*.log all processes on machine have died, roslaunch will exit shutting down processing monitor... ... shutting down processing monitor complete done
按照检索尝试修改相关world文件中的参数<sim_time>无效
想请教这个报错具体是指什么地方出错了? -
RE: 一键安装:请问一键安装的ROS没有自带Gazebo吗?
@1687028512 已自行解决
原本遇到的问题是,需要编译一个项目,遇到这样的报错Could not find a package configuration file provided by “gazebo_ros” with any of the following names: gazebo_rosConfig.cmake gazebo_ros-config.cmake
可以通过以下命令解决
sudo apt-get install ros-$ROS_DISTRO-gazebo-ros-control -y
参考资料
https://blog.csdn.net/ben_xiao_hai_123/article/details/122679577