MoveIt 仿真 Gazebe 教程学习(五)

摘要:
将ros_ Explore放在家中/wei/moveit_ wei/src。catkin_生成文件ros_探索过程:1mkdir-p~/moveit_wei2/src23cd~/moveit _wei2/src/45gitclonehttp://github.com/plasmodic/ecto.git67sudoapt-getinstalllibboost-python-devlibboost-filesystem-devlibboost-system-dev8libboost-thread-devpython-setuptoolspython-gobjectpython-gtk2graphvizdoxygen9python-sphinx101112gitclonehttps://github.com/ros-交互式操纵/操纵_消息.git1314gitclonehttps://github.com/ros-interactive-manipulation/household_objects_database_msgs.git1516cd../1718catkin_make问题1:1--找不到等2--找不出所需的组件“cto”。以下CMaker/rin指示您需要安装具有相同名称的软件包或更改您的环境。3CMakeErrorat/opt/ros/media/share/catkin/make/catkinConfig。cmake:83:4找不到由“cto”提供的具有以下任意一个名称的电容器配置文件:67ectoConfig.cmake8ecto-config.cmake910将“ecto”的安装前缀添加到cmake _ PREFIX _ PAThorset 11“ecto_DIR”中,以包含上述文件的新目录。如果“ecto 12提供了独立的开发包或SDK,已安装。14CallStack:15ros_exploring/robot_eception/ork_tutorials/CMakeLists.txt:4161718--配置完成,错误发生!
MoveIt 仿真 Gazebe 教程学习(五)

 

【古月居】

ROS探索总结(五)——创建简单的机器人模型smartcar,网址如下:

https://www.guyuehome.com/243

还有相关的一系列文章都可以看看。

前提:

源码地址:https://github.com/huchunxu/ros_exploring 需要把里面的 ROS2 文件夹删除,它不能放在 ROS1 环境中。把 ros_exploring 放在home/wei/moveit_wei/src 里面。

catkin_make文件ros_exploring的流程:

 1 mkdir -p ~/moveit_wei2/src
 2  3 cd ~/moveit_wei2/src/
 4  5 git clone http://github.com/plasmodic/ecto.git
 6  7 sudo apt-get install libboost-python-dev libboost-filesystem-dev libboost-system-dev 
 8         libboost-thread-dev python-setuptools python-gobject python-gtk2 graphviz doxygen 
 9         python-sphinx
10 11 12 git clone https://github.com/ros-interactive-manipulation/manipulation_msgs.git
13 14 git clone https://github.com/ros-interactive-manipulation/household_objects_database_msgs.git
15 16 cd ../
17 18 catkin_make

问题1:

 1 -- Could NOT find ecto (missing: ecto_DIR)
 2 -- Could not find the required component 'ecto'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
 3 CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
 4   Could not find a package configuration file provided by "ecto" with any of
 5   the following names:
 6  7     ectoConfig.cmake
 8     ecto-config.cmake
 9 10   Add the installation prefix of "ecto" to CMAKE_PREFIX_PATH or set
11   "ecto_DIR" to a directory containing one of the above files.  If "ecto"
12   provides a separate development package or SDK, be sure it has been
13   installed.
14 Call Stack (most recent call first):
15   ros_exploring/robot_perception/ork_tutorials/CMakeLists.txt:4 (find_package)
16 17 18 -- Configuring incomplete, errors occurred!
19 See also "/home/wei/moveit_wei2/build/CMakeFiles/CMakeOutput.log".
20 See also "/home/wei/moveit_wei2/build/CMakeFiles/CMakeError.log".
21 Invoking "cmake" failed
22

解决:

1 cd ~/moveit_wei2/src
2 3 git clone http://github.com/plasmodic/ecto.git
4 5 sudo apt-get install libboost-python-dev libboost-filesystem-dev libboost-system-dev 
6         libboost-thread-dev python-setuptools python-gobject python-gtk2 graphviz doxygen 
7         python-sphinx

问题2:

 1 CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
 2   Could not find a package configuration file provided by "move_base_msgs"
 3   with any of the following names:
 4  5     move_base_msgsConfig.cmake
 6     move_base_msgs-config.cmake
 7  8   Add the installation prefix of "move_base_msgs" to CMAKE_PREFIX_PATH or set
 9   "move_base_msgs_DIR" to a directory containing one of the above files.  If
10   "move_base_msgs" provides a separate development package or SDK, be sure it
11   has been installed.
12 Call Stack (most recent call first):
13   ros_exploring/robot_mrobot/mrobot_navigation/CMakeLists.txt:7 (find_package)
14 15 16 -- Configuring incomplete, errors occurred!
17 See also "/home/wei/moveit_wei2/build/CMakeFiles/CMakeOutput.log".
18 See also "/home/wei/moveit_wei2/build/CMakeFiles/CMakeError.log".
19 Invoking "cmake" failed
20

解决:

1 sudo apt-get install ros-melodic-move-base-msgs

问题3:

1 fatal error: alsa/asoundlib.h: 没有那个文件或目录

解决:

1 sudo apt-get install libasound2-dev

问题4:

1 fatal error: boost/tr1/unordered_map.hpp: 没有那个文件或目录
2  #include <boost/tr1/unordered_map.hpp>

解决:

1 1,进入到ecto的目录下使用如下命令找到这两个文件
2 $ grep -r 'tr1'
3 ./src/lib/util.cpp:#include <boost/tr1/unordered_map.hpp>
4 ./src/lib/plasm/impl.hpp:#include <boost/tr1/unordered_map.hpp>
5 
6 
7 把tr1删除,同时把代码里的std::tr1::unordered_map字段改成boost::unordered_map即可。


grep 命令,用于查找文件里符合条件的字符串。

vim 编辑文件。

i 表示进入插入模式。

ESC 表示进入普通模式。

:wq 表示保存并退出。

参考博客:https://blog.csdn.net/ckkboy/article/details/99584987

 

问题5:

1 /usr/bin/ld: 找不到 -lmsc
2 collect2: error: ld returned 1 exit status

解决:

1 安装boost

 

参考博客:
https://blog.csdn.net/qq_32115101/article/details/89220824
https://blog.csdn.net/ckkboy/article/details/99584987

boost安装和卸载:

1 $  sudo apt-get install libboost1.54-dev(安装)
2 $ sudo apt-get autoremove libboost1.54-dev(卸载)

运行 sudo ./b2 的结果:

 

 

查看版本:

1 dpkg -S /usr/include/boost/version.hpp

boost 版本结果:

 

 

问题6:

1 /home/wei/moveit_wei2/src/ecto/samples/experimental/necto.cpp:247:56: error: ‘boost::asio::ip::tcp::acceptor {aka class boost::asio::basic_socket_acceptor<boost::asio::ip::tcp>}’ has no member named ‘get_io_service’
2        connection_ptr new_conn(new connection(acceptor_.get_io_service()));

 

解决:

1 修改文件/ecto/samples/experimental/necto.cpp第247行和第265行。

问题7:

1 error: ‘class boost::asio::io_context::strand’ has no member named ‘get_io_service’

解决:需要修改ecto/src/lib/strand.cpp,修改第95行的代码:

1 boost::asio::io_service& serv_inside_strand = thestrand->get_io_service(); //改前
2  boost::asio::io_context& serv_inside_strand = thestrand->context() ;  //改后

参考博客:https://blog.csdn.net/u013013023/article/details/108715340

 

 

 

一、生成配置文件

cp 命令 :把一个文件拷贝到另一个目录。

grep 命令:用于查找文件里符合条件的字符串。

/是指根目录:就是所有目录最顶层的目录。

./表示当前目录,./ 一般需要和其他文件夹或者文件结合使用,指代当前目录下的东西。

1 cd ..          切换到上级目录   
2 cd ../文件夹    切换到上级目录中的某个文件夹

参考链接:https://www.yisu.com/zixun/131889.html

make 是编译。

make install 是安装。

 

在linux系统中,使用vi编辑,在命令行模式(按ESC)下 按 u 是撤销,相当于windows 下的ctrl+z。

取消上一步操作是 ctrl+r 相当于window下的 ctrl+y,有了这两个快捷键操作起来就会方便很多。

参考博客:https://blog.csdn.net/qq_31382921/article/details/77993860

 

1.创建模型

加载 urdf 模型:

 

虚拟关节:创建机械臂和世界坐标系联系的部分,主要用于移动机械臂。

 

2.机械臂规划组:有两个控制组

第一个:六个关节

第二个:前爪:前端不需要运动学插件。

选择 KDL 运动学

 

3.自定义点位

初始点位:本教程设置名字为 home 。

4.终端夹具配置

 

5.消极关节

不需要考虑和计算的关节,就是叫做 消极关节,不需要去做配置。

 

6.作者信息

package.xml包里设置好 各个功能包的姓名和联系方式,使用别人的功能包可以通过package.xml包向别人请教问题。

 

7.生成配置文件

 

把一系列的配置文件放在 marm_moveit_config 文件夹里面,之后可以直接 rosrun 这个文件夹即可。

生成的文件有:

 

 

二、功能测试

1.阶段一的模型可以生成一个 demo.launch 文件,可以用这个文件检查配置流程是不是正确的。

启动 demo.launch 文件:

1 roslaunch marm_moveit_config demo.launch

 

MotionPlanning 是 MoveIt 插件:

 

问题:

1 ==ROS-找不到launch文件。==

解决办法:

1 $   cd ~/catkin_ws/
2 
3 $   catkin_make
4 $   source devel/setup.bash
5 
6 $   echo $ROS_PACKAGE_PATH   /home/ideallic/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
7 $   export | grep ROS

原理解释:

来到工作空间下对工作空间进行编译,并使用 source 命令配置环境变量。

出现这个报错信息的原因是工程中新建一个 launch 文件后,没有及时配置环境变量,导致 roslaunch 命令无法识别到新添加的 launch 文件。

参考博客:https://zhuanlan.zhihu.com/p/94971196

 

2.加入场景物体

下载Gazebo模型库:

1 git clone https://github.com/osrf/gazebo_models

下载挺慢的,要十几分钟。

把 bowl.dae 加入到场景中。

 

 

问题:

.gazebo 文件夹没显示。

解决:

在页面 ctrl + h 即可出现 .gazebo 文件夹。

 

三、完善模型

 

对urtf 和launch 文件进行编写等,不断完善模型。

启动仿真环境:

1 roslaunch marm_gazebo arm_world.launch

 

问题1:

1 [Err] [REST.cc:205] Error in REST request

解决:

1 sudo gedit ~/.ignition/fuel/config.yaml
2 
3 然后将  url : https://api.ignitionfuel.org   用 # 注释掉
4 添加   url: https://api.ignitionrobotics.org  

问题2:

1 [gazebo_gui-2] process has died [pid 72816, exit code 134, cmd /opt/ros/melo

解决:

1 echo $ROS_PACKAGE_PATH 
2 
3 export SVGA_VGPU10=0
4 roslaunch marm_gazebo arm_world.launch

要使更改永久使用:

1 $ echo "export SVGA_VGPU10=0" >> ~/.bashrc

参考博客:https://blog.csdn.net/xiaodingqq/article/details/86660902

四、ros_control

 

 

 

 

 

五、配置并加载控制器

 

启动仿真环境:

1 roslaunch marm_gazebo arm_gazebo_control.launch

控制单轴运动:

1 rostopic pub /marm/joint2_position_controller/command std_msgs/Float64 1.0

RRBot栗子 可以学习到 Rviz 和 Gazebo 结合。

参考博客:https://blog.csdn.net/weixin_43455581/article/details/10633422

 

监控机器人状态::

1 rostopic echo /marm/joint_states

问题:

1 WARNING: topic [/marm/joint_states] does not appear to be published yet

没有输出正确的信息,而是出现了警告。

六、MoveIt 和 Gazebo 集成

1 roscore
2 
3 echo $ROS_PACKAGE_PATH
4 
5 roslaunch marm_gazebo arm_bringup_moveit.launch

 

 

问题:

 

若在rviz中出现**global status:warn**警告,

则运行:

1 rosrun tf static_transform_publisher 0 0 0 0 0 0 map base_link 50

Rviz 添加模型,点击add添加robotmodel

第一次运行时rviz并不会正常显示模型,需要设置一些配置

  1. 首先去到Display——Fixed Frame选则baselink

  2. 然后点击Add添加rviz——RobotModel

  3. 我这边设置的尺寸有点大,记得缩放视野,在rviz窗口的右边增加distance或者滑滚轮

  4. 再根据自己的喜好设置要显示什么信息

如果不保存config,以后重新打开rviz都要重新设置一遍,因此可以点击file——save config as保存到launch文件夹里命名为config.rviz。再打开之前的launch file ,把第9行改成

1 <node name="rviz" pkg="rviz" type="rviz" args="-d $(find RRrobot_description)/launch/config.rviz"/>

这样以后都不用重新配置了。一下是rviz结果。

 

参考博客:https://blog.csdn.net/mr_yu_1997/article/details/115429001

https://www.pianshen.com/article/3870319148/

 

七、如何使用MoveIt!控制机械臂运动?

1、用户接口:

 

 

2、编程接口:

 

 

 

3、编程模式:

 

4、关节空间运动:

点到点运动:不需要在笛卡尔空间规划末端运动轨迹,机器人各个关节运动不需要联动。

5、设置关节角度:

 

 

免责声明:文章转载自《MoveIt 仿真 Gazebe 教程学习(五)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Enterprise Architect 注册码Android基于mAppWidget实现手绘地图(十)–在放大前后执行一些操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

crontab命令

前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。 一、cr...

在Win98上手工制作单张“网络软盘”

  1.      制作一张普通的DOS启动软盘 这一步与前面“四/2”一样。下面我们将该软盘称为“网络软盘”。 2.      拷贝现成的14个网络文件 找一张Windows NT Server 4.0中文版的安装光盘放入光驱中,将光盘根目录下\CLIENTS\MSCLIENT\NETSETUP子目录中的14个网络文件EMM386.EXE、HIMEM.S...

linux学习9 运维基本功-Linux常用基础命令实战应用

一、文件系统知识回顾 1、Linux文件系统: a、文件名称严格区分字符大小写 b、文件可以使用除/以外任意字符 c、文件名长度不能超过255个字符 d、以.开头的文件为隐藏文件: . :当前目录 .. :当前目录的上一级目录 2、linux目录 a、工作目录:working directory b、家目录 二、常用命令 1、pwd:printing wo...

人生苦短,我用python-- Day4

  导航目录                         1.装饰器   1.1 函数即变量   1.2 高阶函数   1.3 嵌套函数   1.4 高阶函数+嵌套函数 =>就能实现本节的函数装饰器功能 2.迭代器&生成器   2.1 列表生成式   2.2 生成器   2.3 斐波那契序列   2.4 生成器实力应用   2.5 迭代器...

Cause: java.lang.UnsupportedOperationException

运行web项目的时候出现以下错误: ### Cause: java.lang.UnsupportedOperationException    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.ja...

makefile中的自动化变量 【转】

转自:http://blog.chinaunix.net/uid-28458801-id-3495215.html 自动化变量 模式规则中,规则的目标和依赖文件名代表了一类文件名;规则的命令是对所有这一类文件重建过程的描述,显然,在命令中不能出现具体的文件名,否则模式规则失去意义。那么在模式规则的命令行中该如何表示文件,将是本小节的讨论的重点。 假如你需要...