文章目录
First of all
转战ROS后的一些环境配置的常规操作,为了方便之后有问题做重复工作也为了分享,特此记录。
其中需要注意的是:安装前要认真阅读官方教程!
很多问题官方教程就能够解决。
虚拟机
这里可以用虚拟机。推荐vm虚拟机。
Ubuntu
这里比较推荐英文安装,否则可能会出现cd 桌面
这样的语句,很不协调,但是英文安装就没有中文输入法了。
在ubuntu上安装中文输入法-搜狗拼音
建议直接安装搜狗拼音参考
-
图形界面ubuntu->software->fcitx
sudo apt-get install -f
sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb
-
进入System Settings --> Language Support;
input method system :fcitx
Apply System-Wide -
右上角的键盘标志,选择Configure Current Input Method,进入到Add input method界面,将下面的Only Show Current Language 点掉后,在搜索栏搜索搜狗拼音,选中之后进行添加,如果找不到sogou pinyin,则重启主机重新操作。
- 其他问题
- 如果右上角没有键盘标志,则参考->百度经验
- cd到sogoupinyin_2.2.0.0108_amd64.deb所在目录下之后再进行安装。
文件对比工具
sudo apt-get install meld
ubuntu网速慢的原因找到啦!
deb的安装与启动
- 首先说一下tar包的安装方法->here
其实就是有makefile的包怎么安装,make,sudo make install完事。 - deb包
使用deb直接安装有时候会出现,安装包名和包名和启动名不一样的情况(绝大部分情况都是包名和启动名一样且在安装包名中),实属头疼,这里写一下如何找到安装包名。
sudo dpkg -i 安装包名 //先把包安装了
sudo dpkg -s 包名 //注意这里的包名指的并不是安装包名
dpkg -L 包名 //这里就可以看到启动名字了
另外可以直接双击打开deb包,进入应用程序下载界面能够直接看到pkg的名字。
ROS
安装
基本所有的安装问题在官网上都能找到。
- sudo rosdep init 报错–>
sudo gedit /etc/resolv.conf
将原有的nameserver这一行注释,并添加以下两行:
nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器
保存退出,执行( or use vpn)sudo apt-get update
- rosdep update 报错–>疯狂 select best server,或趁着早上大家都没起来的时候赶紧执行。
- attention: if you changed server you must star form sudo rosdep init
遇事不决
source ~/catkin_ws/devel/setup.bash
使用
- ROS文件系统(工程结构)
- 创建ROS工作空间及编译
- 创建包以及一些其他依赖
- py Cplusplus xml cmake对包进行编写 【其中python不需要编译】
- UR机器人通信–上位机通信(python)
- ros环境下运行python脚本
git
python 汇总
- 提示未获得授权【注意注释下面要加空格!】
Kdevelop开发环境
添加到桌面:
cd ~/Desktop
touch Kdevelop.desktop
chmod +x Kdevelop.desktop
sudo vim Kdevelop.desktop
添加内容:
[Desktop Entry]
Type=Application
Terminal=false
Exec=bash -i -c “kdevelop”
Name=kDevelop
Icon=kdevelop
ps: 18.04没法用!
sudo rm -rf build/ 打开kDevelop,使用shell或者桌面图标均可 点击“工程”->“打开工程”
找到catkin_ws/src 下的 CMakelists.txt,选中,点击“Next”, 将工程名称修改为自己的(默认为src)
"Finish” 出现“配置构建目录”窗口 将“构建目录”改为 /home/user/catkin_ws/build/(起初删除的那个)
选择合适的构建类型
“Debug/Release”,可在CMakeList.txt中加入下面的指令,来设置编译模式。注意根据自己的实际情况设定Debug或者Release
-DCATKIN_DEVEL_PREFIX=…/devel -DCMAKE_INSTALL_PREFIX=…/install
应用
- 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/
catkin_make
source devel/setup.bash //执行下面这个就不用每次都source啦
- ROS工作空间永久添加到环境变量中
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
moveit安装
moveit二进制文件安装可能会有很多bug及问题,这里推荐使用源码安装。而且最好使用最新版本而不是使用老版本。
-
在ubuntu下安装rosinstall时很慢,根据rosinstall的文件内容,可以在windows上下载后拷贝到ubuntu系统下使用。
-
修改过内容后需要catkin build, 编译时间过长(约50min,如果是第一次编译则可能需要30min以上),对于调试不利。(官方教程中有关于如何部分编译的方法这里没有探究)
[build] Summary: All 40 packages succeeded! [build] Ignored: 6 packages were skipped or are blacklisted. [build] Warnings: 29 packages succeeded with warnings. [build] Abandoned: None. [build] Failed: None. [build] Runtime: 12 minutes and 38.5 seconds total.
【参考】
- moveit二进制文件安装
- moveit源码安装official
注意千万不要安装成python3(对应于20.04版本的moveit),安装不对应版本的wtools工具会报错,强行安装则会卸载ROS!还有注意一定要安装对应版本。 - ompl源码安装official
- 源码安装moveit+ompl的详细教程?谷歌上看了几种都有问题,求亲试有效的……?
- moveit+ompl源码安装
- melodic版本moveit和ompl源码安装
根据测试所述添加自己的算法的方式并不正确,但该src下的ompl确为源码文件.
echo "source ~/ws_moveit/devel/setup.bash" >> ~/.bashrc
- 卸载moveit->here
sudo apt-get remove ros-<ros-distro>-moveit-*
sudo apt-get autoremove
- libboost库冲突问题,如果你首先安装了ros然后又安装了openrave,那么你在源码编译moveit的时候就会出现liboost库的冲突提示!他们两个都会安装符合自己版本的boost库。相同的问题->here
/usr/bin/ld: warning: libboost_system.so.1.65.1, needed by /opt/ros/melodic/lib/libroscpp.so, may conflict with libboost_system.so.1.58.0
/usr/bin/ld: warning: libboost_system.so.1.65.1, needed by /opt/ros/melodic/lib/libroscpp.so, may conflict with libboost_system.so.1.58.0
ROS is 1.65.1
so openrave is 1.58.0.
奇怪的是在一段时间不用之后发现又能重新编译通过,推断可能是缓存得到清除后有能够重新定位。【已解决】libboost_program_options.so.1.65.1: 无法添加符号: DSO missing from command line
- 需要注意的是由于我们将moveit和ompl放在了一个工作空间,但是ompl本身并不是一个ros的包,因此,在编译的时候要使用
catkin_make_isolated
或者catkin build
,而不是用catkin_make
否则会有错误This workspace contains non-catkin packages in it, and catkin cannot build a non-homogeneous works
但是现在有一个疑问,moveit源码里并没有ompl,那么moveit是如何实现规划的呢?(看源码todo)
rviz
首先安装
sudo apt-get install ros-<ros-distro>-moveit-visual-tools
【参考】
【问题】
尝试运行 panda_moveit_config demo.launch会出现
并且拖动小球,规划不成功!可以看到应该是碰撞检测文件有问题。
思路上参考: 实体Panda机械臂,Moveit规划报Unable to find a valid state nearby the start state (using jiggle fraction …问题 虽然实际上并没有安装franka_ros。此问题没有得到解决,考虑到在之后的ikfast使用中也要删去panda_moveit_config这里就将share下的删除。(todo)
此外,
暂时不将之视为错误->here
moveit setup assistant
roslaunch moveit_setup_assistant setup_assistant.launch
这里是生成panda_moveit_config的教程->here
首先记录ready pose:
joints = [0.0 -0.785 0.0 -2.356 0.0 1.571 0.785]
panda_link8 pose = [
header:
seq: 0
stamp:
secs: 1611298362
nsecs: 672781944
frame_id: "/world"
pose:
position:
x: 0.307019570052
y: -5.22132961561e-12
z: 0.590269558277
orientation:
x: 0.923955699469
y: -0.382499497279
z: 1.3249325839e-12
w: 3.20041176635e-12 ]
panda_link8 RPY = [3.1415926535848926, -4.8966698080394805e-12, -0.785000000006922]
需要注意的是melodic和kinetic在碰撞检测生成的时候有所不同,简断节说,就是melodic生成的碰撞检测文件更细致也更容易被检测到碰撞,因此要做修改。
real-time内核安装
【准备工作】
首先应该应该先安装openssl
从官网上下载个即可,这里随便举个例子
可以参考->here
tar -zxvf openssl-1.0.2o.tar.gz
cd openssl-1.0.2o
sudo ./config --prefix=/usr/local --openssldir=/usr/local/openssl [ATTENTION!!]
sudo make -j8
sudo make install
openssl version
结果没问题就可了
【安装】
-
[false] 从零开始玩转Franka Panda机器人
franka官方的教程经过实践发现有问题。make dep-pkg问题无法解决此方法并不推荐 -
[false] ubuntu14 编译安装更新内核及驱动 make module is false!!
其中报错了可以参考->here
简断节说就是scripts的Makefile改成:
HOSTLDLIBS_sign-file = -L/usr/local/lib -lssl -lcrypto -ldl -lpthread
HOSTLDLIBS_extract-cert = -L/usr/local/lib -lcrypto -ldl -lpthread
- Install RT Linux patch for Ubuntu this is the only right blog!.
【坑】
这里踩了一些坑,其中主要就是对make config文件进行了过多操作,千万不要用“make deconfig”
config错只能清除->make distclean,然后make menuconfig 再配置一遍即可。
make clean
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。
make distclean
类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile。
【测试】
- /etc/default/grub 配置一下才能出现
里面的内容也比较好懂,注释掉并且该挨时间就可以了->经过测试发现不同系统有不同的grub所以也可以参考一下->here
总结下来就是:
步骤如下:
1、gedit /boot/grub/grub.cfg
menuentry ‘Ubuntu’ 对应编号0
submenu ‘Advanced options for Ubuntu’ 对应编号1
查找实时系统在子菜单中的排序,通过查子菜单中关键字menuentry来找排序更加方便
假设实时系统在子菜单中的排序为7,那么在子菜单中编号应该为6,从0开始计数
如果是ubuntu和window双系统,会有菜单项
menuentry ‘Window…’ 对应编号为2
2、sudo gedit /etc/default/grub
GRUB_DEFAULT 默认启动系统项
GRUB_DEFAULT = 0,为默认设置,直接进入默认ubuntu系统;
GRUB_DEFAULT=“1>6”:该设置表示默认进入子菜单排序第七的系统,设置实时系统时使用,系统内核数量变化有可能就进入不到实时内核系统。不推荐使用这种方式。推荐使用下面的方式。
GRUB_DEFAULT=“Advanced options for Ubuntu>Ubuntu, with Linux 4.14.12-rt10”
这种“submenu>menuentry”的方式,可靠稳定,推荐使用。
GRUB_DEFAULT= 2,在安装双系统的情况下直接进入Window系统
#GRUB_HIDDEN_TIMEOUT=10,这个最好是注释掉,如果不注释,不能手动选择启动系统项,直接进入系统
对于嵌入式工控机可以不注释
GRUB_TIMEOUT=10 ,可设置一个比较小的时间。
3、sudo update-grub
4、sudo reboot
开机自启动
【16.04】
- sudo gedit /etc/rc.local 加入启动内容即可(cmh 或 sh)
【18.04】
- 参考->here
其中有时候会间歇性的不执行,那么可以sleep一下,详细参考:ubuntu下 rc.local的脚本不运行
实际使用过程中难免遇到各种问题,可以参考->Ubuntu 16.04出现:"Failed to start /etc/rc.local Compatibility"的问题解决思路
systemctl status rc-local.service