我想在Ubuntu上安装ROS indigo,但在安装和设置iRobot Create之后,我找不到一个仅适用于iRobot Create的指南,因此我将制作一个
步骤1:首先安装Ubuntu
首先,您应该通过双重安装ubuntu 14.04
步骤2:使用您当前的操作系统启动,或者在VMWare Workstation(Windows)或VMWare Fusion(Mac)中启动(请勿使用oragle virtualbox,它不能与usb一起使用!)
设置您的Sources.list
Ubuntu 14.04(可信任)
在终端中运行此行,然后输入密码
sudo sh -c‘echo“ deb http://packages.ros.org/ros/ubuntu trusty main”》/etc/apt/sources.list.d/ros-latest.list’
设置密钥
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O-| sudo apt-key add-
步骤3:安装
通过运行此命令开始
sudo apt-get update
完成后,运行此
sudo apt-get install ros-indigo-desktop-full
然后
sudo apt-get install python-rosdep python-wstool ros-indigo-ros
现在我们需要初始化rosdep
sudo rosdep init
rosdep更新
步骤4:设置工作区
在终端上执行此操作以设置工作空间
mkdir〜/rocon
cd〜/rocon
wstool init -j5 src https://raw.github.com/robotics-in-concert/rocon/indigo/rocon.rosinstall
source/opt/ros/indigo/setup.bash
rosdep install-从路径src -i -y
catkin_make
mkdir〜/kobuki
cd〜/kobuki
wstool init src -j5 https://raw.github.com/yujinrobot/yujin_tools/master/rosinstalls/indigo/kobuki.rosinstall
source〜/rocon/devel/setup.bash
rosdep install --from-paths src -i -y
catkin_make
mkdir〜/turbotbot
cd〜/turtlebot
wstool init src -j5 https://raw.github.com/yujinrobot/yujin_tools/master/rosinstalls/indigo/turtlebot.rosinstall
源〜/kobuki/devel/setup.bash
rosdep install --from-paths src -i -y
catkin_make
如果rosdep安装步骤是〜/turtlebot无法说明无法找到create_dashboard和create_gazebo_plugins,请确保您在rosdep install命令中使用“ -r”,并且即使无法找到create_dashboard或create_gazebo_plugins,该操作仍将继续。
为了方便起见
echo“ source〜/turtlebot/devel/setup.bash” 》》〜/.bashrc
步骤5 :网络时间协议
安装Chrony
sudo apt-get install chrony
手动同步NTP
sudo ntpdate ntp.ubuntu.com
步骤6:为IRobot Create设置Turtlebot
运行此命令以为iRobot创建龟机器人
回显“ export TURTLEBOT_BASE = create” 》》〜/turtlebot/devel/setup.sh
echo“ export TURTLEBOT_STACKS = circles” 》》〜/turtlebot/devel/setup.sh
echo“ export TURTLEBOT_3D_SENSOR = kinect” 》》〜/turtlebot/devel/setup.sh
回显“导出TURTLEBOT_SERIAL_PORT =/dev/ttyUSB0” 》》〜/turtlebot/devel/setup.sh
源〜/turtlebot/devel/setup.bash
并记住将您的用户添加到拨出
sudo adduser用户名拨出
仅在您没有运行权限的情况下执行此操作
su-用户名
步骤7:现在您应该可以控制IRobot创建了
现在,您应该能够控制iRobot Create
打开3个Shell并运行以下命令之一每个shell中的命令
-roscore
-roslaunch turtlebot_bringup minimal.launch
-roslaunch tur tlebot_teleop keyboard_teleop.launch
步骤8:本指南的来源
http://wiki.ros.org/turtlebot/Tutorials/indigo/Ins。 。.
http://wiki.ros.org/indigo/Installation/Ubuntu
http://wiki.ros.org/turtlebot/Tutorials/indigo/Wor 。.
的http://wiki.ros.org/turtlebot/Tutorials/hydro/Crea 。..
https://bugs.launchpad.net/ubuntu/+source/gtkterm/。..
步骤9:制作Irobot的源代码沿着地板行
/* ------- -------------------------------------------------- -----------------
程序:irobot_linefollower
说明:这个简单的程序使iRobot创建(如果已连接)跟随一行到计算机上,该代码在硬件上运行:iRobot使用USB串行电缆创建,您可能需要更改sensor_turn_value以适合iRobot创建软件:Linux ubuntu 14.04,安装了ROS indigo Turtlebot工作区设置(如果遵循以下ROS indigo安装指南,它将在那里设置。)在那里e 2运行该程序所需的必需进程才能正常运行,即-$ roscore//! roscore/master-$ roslaunch turtlebot_bringup minimal.launch//! Turtlebots minimal.launch程序参考:-ROS indigo安装指南https://www.instructables.com/id/Ros-Indigo-install-on-Ubuntu-1/
日期:2014年12月5日修改:作者:Anders Vestergaard,Jonas Vestergaard,Johansen BenjaminRudkjærRønnovPedersen,Emil Blixt Hansen ChristianPræstegaardMadsen,Benjamin RindomGøthlerAKA小组:AAU大学的机器人P1-B304 ----------------- -------------------------------------------------- ------- */
#include//!实现函数的逻辑,例如cout函数#include//!包括ROS系统最常见的公共部分#include//!包含能够控制Turtlebot的节点(请阅读iRobot Create)#include//!包括能够读取Turtlebot上的传感器的节点(读取iRobot Create)
//!定义变量浮动速度= 0.20;//!控制Turtlebots速度(以米/秒为单位)= 0.00;//!当Turtlebot旋转浮动时,用于保持旋转速度的变量turn_left_value = 1.0;//!左转浮动控制转弯速度turn_right_value = -1.0;//!右转弯的控制转弯速度int ceiling_left_sensor_value = 0;//!变量以保持左悬崖传感器值int悬崖_右_传感器_值= 0;//!变量,以保存正确的悬崖传感器值int sensor_turn_value = 750;//!控制Turtlebot的传感器值以转回
//!每次将数据发布到“/mobile_base/sensors/core”主题时,都会调用此函数。void ceilingSensorCallback(const create_node :: TurtlebotSensorState :: ConstPtr&msg){悬崖_left_sensor_value = msg-》 cliff_left_signal;//!将主题中的悬崖信号信号值存储到悬崖变量传感器变量值悬崖信号传感器值= msg-》 cliff_right_signal;//!将主题中的悬崖信号信号值存储到悬崖信号传感器值//std :: cout 《《悬崖传感器值《《“”“悬崖传感器值《《” \ n“;//!调试:将传感器值写入端子。 }//!无效的悬崖传感器回调
//!程序的主要功能int main(int argc,char ** argv){//!将变量argc和argv初始化为ros :: init()需要那些变量来执行任何ROS参数
ros :: init(argc,argv,“ robot_driver”);//!初始化ROS,这使ROS可以通过命令行重新命名,最后一个arugemnt(“ robot_driver”)是我们节点的名称。
//!我们将用于与节点ros :: NodeHandle nh;通信的节点句柄。//!发布者ros :: NodeHandle的NodeHandler n;//!订阅者的NodeHandler
/**!告诉管理员我们将向主题“/cmd_vel_mux/input/teleop”发布类型为“ geometry_msgs :: Twist”的消息,第二个参数“ 1”为发布队列的大小。这意味着我们只会缓冲一条消息,如果它被迅速发布。 *///!删除此内容我们将发布到“/cmd_vel_mux/input/teleop”主题以发出命令ros :: Publisher cmd_vel_pub = nh.advertise(“/cmd_vel_mux/input/teleop”,1);
/**!告诉主机我们要订阅主题“/mobile_base/sensors/core”。每当发布到该主题的消息时,ROS都会调用悬崖信号SensorCallback()函数,第二个参数是缓冲区大小,以防我们无法足够快地处理信息时存储消息。如果我们达到1000条存储消息,它将开始删除消息。 *///!删除此内容我们将订阅“/mobile_base/sensors/core”主题以获取传感器价值。 ros :: Subscriber sub = n.subscribe(“/mobile_base/sensors/core”,1,悬崖传感器回调);
geometry_msgs :: Twist base_cmd;//!初始化geometry_msgs :: Twist作为base_cmd函数
base_cmd.linear.x = base_cmd.linear.y = base_cmd.angular.z = 0;//!也许要移动!确保所有向量都设置为0
while(true){//!始终运行的循环。 ROS :: spinOnce();//!调用ros :: spinOnce()时,它会在悬崖传感器中获得任何新消息
std :: cout 《《“左悬崖:” 《《悬崖传感器传感器值《《“右悬崖:” 《《传感器传感器值《《“左转值:” 《
//!驱动命令base_cmd.linear.x = speed;//!将Turtlebot的驱动速度设置为变量base_cmd.angular.z = turn;//!将Turtlebot的转弯速度设置为可变转弯
if(cliff_left_sensor_value》 sensor_turn_value){//!检查左悬崖传感器值是否大于上面设置的sensor_turn_value,如果为true,则转弯= turn_left_value;//!将turn变量设置为turn_left_value以左转,直到我们再次上线。 }
否则if(cliff_right_sensor_value》 sensor_turn_value){//!如果以上为假,则检查右悬崖传感器值是否大于上面设置的sensor_turn_value,如果为true,则进行turn = turn_right_value;//!将turn变量设置为turn_right_value可以右转,直到我们再次上线。 } else {//!如果以上两个if均为假,则转为0;否则为0。//!再次将线上的turn变量设置为0。 }
cmd_vel_pub.publish(base_cmd);//!将驱动命令发送到“/cmd_vel_mux/input/teleop”}上面定义的主题上! while循环END
返回0;//!结束程序}//! int main END
责任编辑:wv
-
Ubuntu
+关注
关注
5文章
560浏览量
29559 -
INDIGO
+关注
关注
0文章
7浏览量
7264
发布评论请先 登录
相关推荐
评论