装机过程中需要修改系统中的环境参数以及配置!!
1./etc/udev/rules.d/imu.rules 添加以下内容(需要创建文件)
# set the udev rule , make the device_port be fixed by imu
#
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{version}==" 2.00", MODE:="0777", SYMLINK+="imu"
2.xiugaiyonghuming
1. 使用root用户权限
sudo su
进入root用户权限。
2. 修改 /etc/passwd用户信息文件
gedit /etc/passwd
找到代表原用户名的那一行,将用户名和后面的用户文件夹目录都修改为新用户名,保存并关闭。
如果没有gedit工具需要先下载gedit,使用其他的文本编辑工具也可以,比如vim。
3. 修改 /etc/shadow用户密码文件
gedit /etc/shadow
找到原用户名对应的地方,修改旧的用户名为新用户名,保存并关闭。
4. 修改 /etc/group用户组文件
gedit /etc/group
这里面会有很多包含旧用户名的组,全部改成新用户名,保存并关闭。
5. 修改用户文件夹目录
这里的文件夹目录是和/etc/passwd中的用户文件夹目录对应的,那里修改了文件夹目录,这里也要修改,如果二者不对应,将无法正常登录。使用以下命令进行修改,比如要将旧的用户名gy,修改为新的用户名rubber,则命令应写为
mv /home/gy /home/rubber
到这一步用户名就修改完成了,重启系统,使用新用户名登录进入。如果登录的时候依然显示的是原来的用户名,可以在图形界面点击右上角的倒三角,点击用户,进入Account Settings界面,在这里将旧用户名改为新用户名即可。
3.将当前用户添加到 ttyS2的组内
rubber@gy-Computer:~$ ls -l /dev/ttyS2
crw-rw---- 1 root dialout 4, 66 4月 13 12:02 /dev/ttyS2
当前组为 dialout 将当前用户rubber添加到dialout
rubber@gy-Computer:~$ sudo usermod -aG dialout rubber
重启用户
查看当前用户是否在组内
rubber@gy-Computer:~$ groups
rubber adm dialout cdrom sudo dip plugdev lpadmin lxd sambashare
3.修改对应的IP修改两个网口的ip对应机械臂和imu在同一个网段
5使用sudo命令时无需输入密码,您可以按照以下步骤进行设置:
打开终端或命令行窗口。
输入以下命令以编辑sudoers文件:
sudo visudo
在打开的文件中,找到以"root ALL=(ALL) ALL"开始的一行。
在该行下面添加以下内容(其中rubber是您的用户名):
rubber ALL=(ALL) NOPASSWD: ALL
保存文件并退出编辑器。
重新启动终端或命令行窗口。
设置完成后,您在使用sudo命令时将不再需要输入密码。
# 运行环境配置文档(参考使用非必须)
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.
## **0.配置ros环境**
### **0.1.ubuntu系统安装**
插入u盘,开机,按`del`进入BIOS面板,进入`Advanced`下的`CSM Configuration`,更改`CSM Support`选项为`Enabled`,进入`boot`选项,选择无uefi的选项为`boot option1#`,`f4`保存重启,按`shift`,选U盘启动,进入ubuntu系统安装。
### **0.2.ubuntu系统安装配置ros**
**(1) 换源**
进入fishros一键换源
```bash
$ wget http://fishros.com/install -O fishros && . fishros
```
**(2) 安装配置ros**
进入fishros一键配置ros
```bash
$ wget http://fishros.com/install -O fishros && . fishros
```
. ** 修改~/.bashrc 增加路径 **
source /home/rubber/rubber_tapping_robot/carto_ws/devel_isolated/setup.bash source /home/rubber/rubber_tapping_robot/rubber_ws/devel/setup.bash # <<< fishros initialize <<< LD_LIBRARY_PATH=/home/rubber/rubber_tapping_robot/rubber_ws/devel/lib:/home/rubber/rubber_tapping_robot/carto_ws/devel_isolated/cartographer_rviz/lib:/home/rubber/rubber_tapping_robot/carto_ws/install_isolated/lib:/opt/ros/noetic/lib:/opt/ros/noetic/lib/x86_64-linux-gnu:/home/rubber/rubber_tapping_robot/rubber_ws/src/aubo_robot_rubber/aubo_driver/lib/lib64/aubocontroller:/home/rubber/rubber_tapping_robot/rubber_ws/src/aubo_robot_rubber/aubo_driver/lib/lib64/config:/home/rubber/rubber_tapping_robot/rubber_ws/src/aubo_robot_rubber/aubo_driver/lib/lib64/log4cplus export ENV_ROBOT_TYPE='0001' export ENV_ROBOT_ID='a002'
## **1.源代码与依赖**
### **1.1.获取源码**
通过U盘拷贝整个 rubber_tapping_robot 到家目录下
通过
### **0.5.cartographer安装**(3.03D导航版本不需要安装复制包过来的不需要安装cartographer。!!!)
``'''''''
1.
sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
3.需要通国小鱼 wget http://fishros.com/install -O fishros && . fishros 安装 rosdepc!!!!!!!!!!!!!
rosdepc update
rosdepc install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
4.重新编译abseil(建议一条指令输入一次,不要全复制粘贴
set -o errexit
set -o verbose
cd abseil-cpp
mkdir build
cd build
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl \
..
ninja
sudo ninja install
cd /usr/local/stow
sudo stow absl
5.编译(在carto_ws下)
cd ~/rubber_tapping_robot/carto_ws
catkin_make_isolated --install --use-ninja
6.问题
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: GMOCK_LIBRARY (ADVANCED) linked by target "time_conversion_test" in directory /home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros linked by target "configuration_files_test" in directory /home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros linked by target "msg_conversion_test" in directory /home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros linked by target "metrics_test" in directory /home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros -- Configuring incomplete, errors occurred! See also "/home/rubber/rubber_tapping_robot/carto_ws/build_isolated/cartographer_ros/CMakeFiles/CMakeOutput.log". See also "/home/rubber/rubber_tapping_robot/carto_ws/build_isolated/cartographer_ros/CMakeFiles/CMakeError.log". FAILED: build.ninja /usr/bin/cmake -S/home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros -B/home/rubber/rubber_tapping_robot/carto_ws/build_isolated/cartographer_ros ninja: error: rebuilding 'build.ninja': subcommand failed <== Failed to process package 'cartographer_ros': Command '['/home/rubber/rubber_tapping_robot/carto_ws/install_isolated/env.sh', 'ninja', 'build.ninja']' returned non-zero exit status 1. Reproduce this error by running: ==> cd /home/rubber/rubber_tapping_robot/carto_ws/build_isolated/cartographer_ros && /home/rubber/rubber_tapping_robot/carto_ws/install_isolated/env.sh ninja build.ninja Command failed, exiting.
解决方法
在 Ubuntu 或 Debian 系统上安装 Google Mock:
安装 Google Test:Google Mock 依赖于 Google Test,因此首先需要安装 Google Test。你可以使用以下命令安装它:
bash
sudo apt-get update
sudo apt-get install libgtest-dev
编译 Google Test:安装后,你需要编译 Google Test 库:
bash
cd /usr/src/gtest
sudo cmake .
sudo make
sudo cp *.a /usr/lib
安装 Google Mock:在安装了 Google Test 之后,你可以安装 Google Mock。通常,你可以使用以下命令来安装它:
bash
sudo apt-get install libgmock-dev
### **1.2.安装依赖**
#### 1.2.1. AprilTag(源码编译)
直接copy或运行命令
```bash
git clone https://github.com/AprilRobotics/apriltag.git
cd apriltag
cmake .
sudo make install
cd ..
sudo rm -rf apriltag
```
#### 1.2.2. Sophus(源码编译)
直接copy或运行命令
```
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
mkdir build
cd build
cmake ..
sudo make install
cd ../..
sudo rm -rf Sophus
```
步骤顺利,sudo make install时报错: Sophus/sophus/so2.cpp:32:26:error:lvalue required as left operand of assignment 针对上述报错修改如下:打开Sophus/sophus/so2.cpp修改对应32、33行代码 32 | unit_comples_.real() = 1.; -> unit_comples_.real(1.); 33 | unit_comples_.imag() = 0.; -> unit_comples_.imag(0.);
#### 1.2.3. opencv3.4.5(源码编译)
ubuntu中安装opencv3.4.5
1.opencv的安装
在SSD中需要使用到OPENCV3,那么经过选择安装opencv3.4.5,首先下载opencv3.4.5
打开网址:https://github.com/opencv/opencv/releases?after=4.1.1
选择opencv3.4.5:
选择源代码,tar格式的,右击复制下载链接,使用wget命令下载opencv 源代码,下载之后解压即可
wget https://github.com/opencv/opencv/archive/3.4.5.tar.gz
解压命令如下:
tar -xvf 3.4.5.tar.gz
解压之后开始编译opencv安装即可。
下面在编译opencv前需要安装一些依赖,使用下面的命令安装依赖项:
首先安装cmake工具,使用下面的命令安装cmake工具:
sudo apt-get install cmake
安装好cmake工具之后,安装一下依赖项
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
安装完依赖项之后,首先进入opencv的目录下,开始使用cmake命令进行编译
cd opencv-3.4.5
创建编译目录
mkdir release && cd release
使用编译命令对opencv3.4.5进行编译
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_OPENGL=ON ..
完成之后使用make命令进行编译,根据自己cpu选择线程数
make -j10
在这一步完成之后输入命令:
sudo make install
至此编译已经完成,接下来添加环境变量:
在位置
sudo gedit /etc/ld.so.conf.d/opencv.conf
文件下创建opencv.conf,在创建好的文件里面添加
/usr/local/lib
如下图:
同时执行命令使得更改生效:
sudo ldconfig
完成这些之后配置bash,具体如下:
在文件/etc/bash.bashrc 的后面添加两行:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
可以借助vim或者winscp实现。之后输入命令
source /etc/bash.bashrc
使得配置生效。并更新数据库:
至此opencv安装完成。
#### 1.2.4. realsense
运行命令```bash
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
sudo apt-get install -y librealsense2-dkms librealsense2-utils librealsense2-dev librealsense2-dbg ros-noetic-realsense2-camera
sudo apt-get --yes install ros-noetic-diagnostic-updater -y
sudo apt-get install ros-noetic-realsense2-*
sudo apt-get --yes install ros-noetic-ddynamic-reconfigure -y
sudo apt-get --yes install ros-noetic-rgbd-launch
sudo apt install ros-noetic-pcl-ros libeigen3-dev
cd /usr/include
sudo ln -sf eigen3/Eigen Eigen
sudo ln -sf eigen3/unsupported unsupported
sudo apt-get update
sudo apt-get --yes upgrade
```
##安装modbus
sudo apt install libmodbus-dev
###安装雷达SDK
git clone https://github.com/Livox-SDK/Livox-SDK
cd Livox-SDK
mkdir build && cd build
cmake ..
make -j16
sudo make install
git clone https://github.com/Livox-SDK/Livox-SDK2
cd Livox-SDK2
mkdir build && cd build
cmake ..
make -j16
sudo make install
##奥比中光相机依赖安装(删除原有的文件夹,在同一及目录下解压缩同名.zip压缩包
sudo apt install libgflags-dev ros-$ROS_DISTRO-image-geometry ros-$ROS_DISTRO-camera-info-manager \
ros-$ROS_DISTRO-image-transport ros-$ROS_DISTRO-image-publisher libgoogle-glog-dev libusb-1.0-0-dev libeigen3-dev \
ros-$ROS_DISTRO-diagnostic-updater ros-$ROS_DISTRO-diagnostic-msgs libdw-dev
#### 1.2.5. Other dependencies
```bash
$ sudo apt install -y ros-noetic-moveit ros-noetic-moveit-visual-tools ros-noetic-navigation ros-noetic-trac-ik-kinematics-plugin ros-noetic-industrial-core ros-noetic-joy
$ sudo apt install -y build-essential cmake pkg-config libjpeg8-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk-3-dev libatlas-base-dev gfortran python2.7-dev ros-noetic-serial
```
### **1.3.auto机械臂包**
直接copy或运行代码
```bash
$ wget http://archive.ubuntu.com/ubuntu/pool/main/p/protobuf/libprotobuf9v5_2.6.1-1.3_amd64.deb
$ sudo dpkg -i libprotobuf9v5_2.6.1-1.3_amd64.deb
```
### **1.4.Visual-Servo**
运行代码
```bash
$ wstool update -t src
```
## **2.网络配置**
### **2.1.有线网络连接*
静态网址设置
enp1s0:192.168.2.1
enp3s0: 192.168.1.102
### **2.3.机器人网口连接**
一般情况下,右侧网口(第一个有线连接)插机械臂,左侧网口(第二个有线连接)插激光雷达。
## **3.开机自启设置**
### **3.1.编写脚本**
编写脚本,脚本位置存放在`rubber_tapping_robot/script`中
```shell
/bin/bash
···
···
w$ hile true
do
···
done
```
### **3.2.修改脚本权限**
在脚本存放处打开终端,运行代码
```
chmod +x auto_run.sh
```
### **3.3.添加自启**
命令行运行
```bash
$ gnome-session-properties
```
Command部分添加以下命令
```
gnome-terminal -x bash -c '/home/rubber/rubber_tapping_robot/script/autostart.sh;exec bash'
```
## **4.机器人远程操作**
### **4.1.VNC**
机器人主机安装`x11vnc`与`openssh-server`,远控主机通过deb安装`vncviewer`即可。
机器人主机通过开机自启脚本启动,远程主机运行`vncviewer`并连接机器人IP即可。
### **4.2.VS code-remote ssh插件**
配置时需要主从机连能够接通外网的局域网,以更新server。
### **4.3.远程鱼眼**
使用MJPG-Streamer达到远程观察机器人携带摄像头的用途。
机器人主机安装MJPG-Streamer,并使用remotecam.sh脚本正确启动程序。可能出现/dev/video*对应不上的问题,根据rubber-xcy中的/etc/udev/rules.d/imu.rules中修改相机相应的.rules文件即可解决,保证每次相机连接的都是video0。
远程主机无需额外配置,浏览器地址输入`http://机器人IP:8080`即可
## **5.机械臂调试**
### **5.1.调试仿真**
实机调试之前先仿真调试,使用`roslaunch visual_servo visual_servo_sim.launch`
修改`aubo_ixx_gazebo_control.launch`
修改`(find aubo_ixx_moveit_config)`
之后运行`roslaunch visual_servo visual_servo_sim.launch`即可。
### **5.2.机械臂标定**
除了在示教器以外,还可以在AuboSDK.cpp中修改。
导航问题
1.启动导航报错
ERROR: cannot launch node of type [move_base/move_base]: move_base
ROS path [0]=/opt/ros/noetic/share/ros
ROS path [1]=/home/rubber/rubber_tapping_robot/rubber_ws/src
ROS path [2]=/home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_rviz
ROS path [3]=/home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros
ROS path [4]=/home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros_msgs
解决方法:
sudo apt install ros-noetic-move-base
2.
ERROR: cannot launch node of type [map_server/map_server]: map_server
ROS path [0]=/opt/ros/noetic/share/ros
ROS path [1]=/home/rubber/rubber_tapping_robot/rubber_ws/src
ROS path [2]=/home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_rviz
ROS path [3]=/home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros
ROS path [4]=/home/rubber/rubber_tapping_robot/carto_ws/src/cartographer_ros/cartographer_ros_msgs
ROS path [5]=/opt/ros/noetic/share
解决方法
sudo apt install ros-noetic-map-server
3
.sudo apt install ros-noetic-robot-pose-ekf
4.
[ERROR] [1684392691.155224726]: "chassis_link" passed to lookupTransform argument target_frame does not exist.
[ WARN] [1684392691.160409645]: link 'imu_link' material 'orange' undefined.
process[landmark_broadcaster-14]: started with pid [4009]
[ INFO] [1684392691.161912122]: lslidar type: c16
process[datatest-15]: started with pid [4017]
[ERROR] [1684392691.192080598]: Unable to open port.
[ INFO] [1684392691.250775610]: output frame: odom
[ INFO] [1684392691.261021295]: Only accepting packets from IP address: 192.168.1.200
[ INFO] [1684392691.261069466]: Opening UDP socket: port 2368
[ INFO] [1684392691.264873838]: Only accepting packets from IP address: 192.168.1.200
[ INFO] [1684392691.264908752]: Opening UDP socket: port 2369
[ INFO] [1684392691.266866106]: return mode: 1
[ INFO] [1684392691.270245406]: base frame: ch[ERROR] [1684392691.155224726]: "chassis_link" passed to lookupTransform argument target_frame does not exist.
[ WARN] [1684392691.160409645]: link 'imu_link' material 'orange' undefined.
process[landmark_broadcaster-14]: started with pid [4009]
[ INFO] [1684392691.161912122]: lslidar type: c16
process[datatest-15]: started with pid [4017]
[ERROR] [1684392691.192080598]: Unable to open port.
[ INFO] [1684392691.250775610]: output frame: odom
[ INFO] [1684392691.261021295]: Only accepting packets from IP address: 192.168.1.200
[ INFO] [1684392691.261069466]: Opening UDP socket: port 2368
[ INFO] [1684392691.264873838]: Only accepting packets from IP address: 192.168.1.200
[ INFO] [1684392691.264908752]: Opening UDP socket: port 2369
[ INFO] [1684392691.266866106]: return mode: 1
[ INFO] [1684392691.270245406]: base frame: chassis_link
[ INFO] [1684392691.278525306]: BASE READY!!!
[ INFO] [1684392691.431160967]: default channel is 8
[imu_sonser_spec-7] process has died [pid 3953, exit code 255, cmd /home/rubber/rubber_tapping_robot/rubber_ws/devel/lib/serial_imu/serial_imu __name:=imu_sonser_spec __log:=/home/rubber/.ros/log/8e02c538-f546-11ed-a249-b9230eb60fa5/imu_sonser_spec-7.log].
log file: /home/rubber/.ros/log/8e02c538-f546-11ed-a249-b9230eb60fa5/imu_sonser_spec-7*.log
assis_link
[ INFO] [1684392691.278525306]: BASE READY!!!
[ INFO] [1684392691.431160967]: default channel is 8
[imu_sonser_spec-7] process has died [pid 3953, exit code 255, cmd /home/rubber/rubber_tapping_robot/rubber_ws/devel/lib/serial_imu/serial_imu __name:=imu_sonser_spec __log:=/home/rubber/.ros/log/8e02c538-f546-11ed-a249-b9230eb60fa5/imu_sonser_spec-7.log].
log file: /home/rubber/.ros/log/8e02c538-f546-11ed-a249-b9230eb60fa5/imu_sonser_spec-7*.log
解决方法:
sudo apt install ros-noetic-global-planner
sudo apt install ros-noetic-dwa-local-planner
5.
/home/rubber/rubber_tapping_robot/rubber_ws/src/lslidar_c16/lslidar_driver/include/lslidar_driver/input.h:24:10: fatal error: pcap.h: 没有那个文件或目录
24 | #include <pcap.h>
| ^~~~~~~~
sudo apt-get update
sudo apt-get install libpcap-dev
6,出现websocket 或者mqtt报错
###需安装websocketpp库:
sudo apt-get install libboost-all-dev
git clone https://github.com/zaphoyd/websocketpp.git
cd websocketpp/
mkdir build
cd build/
cmake ..
sudo make install
sudo apt install python3-websocket
###MQTT安装paho.mqtt.c-1.3.0.zip这个包的源码###
源码在:https://gitee.com/aw-go/mqtt.git
下载编译安装一下:
#####视觉识别Open3D安装
sudo ln -sf /usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/libX11.so
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/open3d_install -DBUILD_SHARED_LIBS=ON -DUSE_SYSTEM_CURL=ON
##编译新的++c版本的识别
安装支持 CUDA 的 ONNX Runtime:
-
wget https://github.com/microsoft/onnxruntime/releases/download/v1.16.3/onnxruntime-linux-x64-gpu-1.16.3.tgz
tar -xzf onnxruntime-linux-x64-gpu-1.16.3.tgz cd onnxruntime-linux-x64-gpu-1.16.3 sudo cp -r include/* /usr/local/include/ sudo cp -r lib/* /usr/local/lib/ sudo ldconfi
-
修改cmakelist
-
# ONNX Runtime
set(ONNX_RUNTIME_PATH "/opt/onnxruntime")
find_library(ONNXRUNTIME_LIB
NAMES onnxruntime
#PATHS "${ONNX_RUNTIME_PATH}/lib"
PATHS /usr/local/lib # 明确指定查找路径
NO_DEFAULT_PATH
REQUIRED
)
# 添加调试信息,确认是否找到库
if(ONNXRUNTIME_LIB)
message(STATUS "Found ONNXRUNTIME library: ${ONNXRUNTIME_LIB}")
else()
message(FATAL_ERROR "ONNXRUNTIME library not found. Please check the installation.")
endif()