我想在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文章
563瀏覽量
29877 -
INDIGO
+關注
關注
0文章
7瀏覽量
7270
發布評論請先 登錄
相關推薦
評論