@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>
问题解决,谢谢小鱼的极速且耐心的回复!这对初学者真的非常有帮助,非常感谢!