创建ROS用户
我们创建一个eaibot的用户,用于ROS操作。
sudo useradd -s /bin/bash -m eaibot
passwd eaibot
为该用户添加sudoer权限,并在执行sudo操作免密码输入的繁琐。方法为在/etc/sudoer文件中添加下面一行,注意以root用户权限使用vim编辑,保存修改的文件使用“wq!”强制保存。
eaibot ALL=(ALL) NOPASSWD:ALL
时间同步
设置时区
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
手工操作
sudo apt-get install ntpdate
sudo ntpdate pool.ntp.org
如果报如下错误:
24 Jun 16:50:14 ntpdate[3495]: the NTP socket is in use, exiting
需要先停掉ntp再同步
sudo service ntp stop
sudo ntpdate pool.ntp.org
添加串口访问权限
arduino或激光雷达等外部设备一般使用串口和ROS通讯,所以需要用户拥有串口的读写权限。大部分的串口都属于dialout用户组。所以把eaibot用户加入dialout组就拥有串口访问权限。命令如下:
sudo usermod -a -G dialout eaibot
重启机器使其生效。
设置ROS环境变量
我们把下面内容同时添加在~/.bashrc和 ~/.profile下面
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
小知识 ~/.bashrc和 ~/.profile区别
要区分 ~/.bashrc和 ~/.profile的用途,首先区分下“login shell”和“no-login shell”。
login shell
代表用户登入, 比如使用 “su -“ 命令, 或者用 ssh 连接到某一个服务器上, 都会使用该用户默认 shell 启动 login shell 模式.
no-login shell
而 no-login shell 的情况是我们在终端下直接输入 bash 或者 bash -c “CMD” 来启动的 shell.
在 login shell模式下的 shell 会去自动执行 /etc/profile 和 ~/.profile 文件, 但不会执行任何的 bashrc 文件的脚本。
在no-login shell 该模式下是不会自动去运行任何的 profile 文件,只会执行/etc/bash.bashrc和~/.bashrc
创建ROS工作空间
创建一个属于自己的ROS工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_init_workspace
catkin_make
创建ROS包
cd ~/catkin_ws/src
catkin_create_pkg test std_msgs rospy roscpp
catkin_make --pkg test
source ~/.bashrc
如果一个项目包含多个ROS包,创建方法如下:
cd ~/catkin_ws/src
mkdir projectxx
cd projectxx
catkin_create_pkg subproj1 std_msgs rospy roscpp
catkin_create_pkg subproj2 std_msgs rospy roscpp
catkin_create_pkg subproj3 std_msgs rospy roscpp
...