CoppeliaSim
CoppeliaSim作為具有高擴展性的仿真平臺,提供了許多介面,可謂萬物皆插件,只要便于生成插件即可,github提供了simExtROS插件的源代碼,當自帶的ROS插件功能無法滿足時,可以修改其源代碼,編譯生成插件即可,
準備作業
建立ROS作業空間
安裝catkin-tools
官網
注意 由于Ubunt 20.04 是Python3,所以使用sudo apt-get install python3-catkin-tools會出現依賴問題,完整程序如下
添加repositories
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
安裝catkin_tools
注意下面是python3,如果是更低版本的ubuntu系統則用python
sudo apt-get update sudo apt-get install python3-catkin-tools
問題:

解決:看上面圖的最下一行,這是缺少一個依賴osrf_pycommon,安裝時要同時安裝上osrf-pycommon
sudo apt install python3-catkin-tools python3-osrf-pycommon
撰寫自定義ROS訊息包
大家自行查詢,這里以我在github下載的阿克曼訊息為例
git clone https://github.com/ros-drivers/ackermann_msgs.git ackermann_msgs

在作業空間下編譯
編譯sim_ros_interface
-
下載libPlugin
注意:libPlugin版本必須與CoppeliaSim的版本相對應,可以下載歷史版本

-
下載sim_ros_interface
注意:同libPlugin,版本必須與CoppeliaSim版本相同,可下載歷史版本
git clone --recursive https://github.com/CoppeliaRobotics/simExtROSInterface.git sim_ros_interface
-
添加自定義訊息ackermann_msgs
修改sim_ros_interface包CMakeLists.txt、package.xml、meta/messages.txt,



-
啟動roscore
-
作業空間下編譯
將sim_ros_interface放在作業空間src下

問題1:COPPELIASIM_ROOT_DIR 路徑沒設定

解決:在~/.bashrc末尾添加export COPPELIASIM_ROOT_DIR=/home/lyz/sim_ws/src/CoppeliaSim_Edu_V4_1_0_Ubuntu16_04/(具體路徑根據自己的CoppeliaSim路徑而定),確認環境變數添加成功,如果添加后還報同樣的錯誤,關閉終端重啟即可,
問題2:

解決:這是因為libPlugin不是最新的,需要先下載最新的libPlugin,替換CoppeliaSim里的libPlugin,然后編譯會出現新的問題,
按照提示,sudo apt install xsltproc 之后編譯便沒啥問題了,
6. 參考博客
由于ubuntu 16 18 的ROS都是基于python2,下載的CoppeliaSim版本一定要注意,因此上面的程序不適合,需要在github上下載歷史版本的sim_ros_interface, 還有下載對應版本的libPlugin,否則編譯會出現很多奇怪錯誤,下載歷史歷史版本的github教程,
CoppeliaSim中測驗
隨便找個場景,訂閱訊息話題


編譯沒問題,在終端能看到這個話題

catkin build 與 catkin_make的區別
https://catkin-tools.readthedocs.io/en/latest/migration.html
主要區別是catkin build編譯是獨立構建的,而catkin_make編譯是有依賴的,本例的作業空間下有自定義訊息包ackerman_msgs與sim_ros_interface,用catkin_make編譯生成的.so插件是有依賴項的,因此將其放在CoppeliaSim下是無法識別ackermann_msgs訊息的,而用catkin build編譯的包已經將所有需要的依賴添加,相對獨立,因此放在CoppeliaSim下是不會出現依賴問題,

除了用catkin build編譯,還可以用catkin_make_isolated單獨對sim_ros_interface編譯,生成的插件效果一樣,
教訓
一定用按照官方教程來做,否則白白浪費那么多時間,自作聰明用catkin_make可以替代catkin build,結果一直沒成功,還是乖乖安裝好catkin tools后一下子就成功了,
參考博客
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253548.html
標籤:其他
