สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: รับการตั้งค่าทุกอย่าง
- ขั้นตอนที่ 2: ทำความเข้าใจว่าคอนโทรลเลอร์ทำงานอย่างไร
- ขั้นตอนที่ 3: การสร้างอินเทอร์เฟซ ROS-MATLAB
- ขั้นตอนที่ 4: รับที่อยู่ IP
- ขั้นตอนที่ 5: สร้าง GUI สำหรับคอนโทรลเลอร์
- ขั้นตอนที่ 6: การเขียนโปรแกรมปุ่ม GUI ที่แก้ไขได้
- ขั้นตอนที่ 7: การเขียนโปรแกรมปุ่มกด GUI
- ขั้นตอนที่ 8: การตั้งค่าการกำหนดค่าเครือข่ายบน ROS PC (Linux)
- ขั้นตอนที่ 9: เรียกใช้คอนโทรลเลอร์
วีดีโอ: ROS Robotic Controller ที่ใช้ Matlab: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ตั้งแต่ฉันยังเป็นเด็ก ฉันใฝ่ฝันที่จะเป็นไอรอนแมนมาตลอดและยังคงทำเช่นนั้น Iron Man เป็นหนึ่งในตัวละครเหล่านั้นซึ่งเป็นไปได้ตามความเป็นจริง และเพียงแค่ทำให้ฉันปรารถนาที่จะเป็น Iron Man สักวันหนึ่ง แม้ว่าผู้คนจะหัวเราะเยาะหรือพูดว่าเป็นไปไม่ได้ เพราะ "มันเป็นไปไม่ได้จนกว่าจะมีคนทำ" - อาร์โนลด์ ชวาร์เซเน็กเกอร์
ROS เป็นเฟรมเวิร์กที่เกิดขึ้นใหม่ซึ่งใช้สำหรับการพัฒนาระบบหุ่นยนต์ที่ซับซ้อน การใช้งานรวมถึง: ระบบประกอบอัตโนมัติ, Teleoperation, แขนเทียมและเครื่องจักรกลหนักของภาคอุตสาหกรรม
นักวิจัยและวิศวกรใช้ประโยชน์จาก ROS ในการพัฒนาต้นแบบ ในขณะที่ผู้ขายหลายรายใช้ ROS เพื่อสร้างผลิตภัณฑ์ของตน มีสถาปัตยกรรมที่ซับซ้อนซึ่งทำให้คนง่อยจัดการได้ยาก การใช้ MATLAB เพื่อสร้างลิงก์อินเทอร์เฟซกับ ROS เป็นแนวทางใหม่ที่สามารถช่วยนักวิจัย วิศวกร และผู้ขายในการพัฒนาโซลูชันที่มีประสิทธิภาพยิ่งขึ้น
ดังนั้นคำแนะนำนี้เป็นเรื่องเกี่ยวกับวิธีสร้าง ROS Robotic Controller ที่ใช้ Matlab นี่จะเป็นหนึ่งในบทช่วยสอนไม่กี่อย่างเกี่ยวกับเรื่องนี้และในบรรดาคำแนะนำ ROS ไม่กี่รายการ เป้าหมายของโครงการนี้คือการออกแบบตัวควบคุมที่สามารถควบคุมหุ่นยนต์ ROS ที่เชื่อมต่อกับเครือข่ายของคุณได้ มาเริ่มกันเลย!
เครดิตการตัดต่อวิดีโอ: Ammar Akher ที่ [email protected]
เสบียง
ส่วนประกอบต่อไปนี้จำเป็นสำหรับโครงการ:
(1) ROS PC/หุ่นยนต์
(2) เราเตอร์
(3) พีซีที่มี MATLAB (เวอร์ชัน: 2014 ขึ้นไป)
ขั้นตอนที่ 1: รับการตั้งค่าทุกอย่าง
สำหรับคำแนะนำนี้ ฉันใช้ Ubuntu 16.04 สำหรับ linux pc และ ros-kinetic ดังนั้นเพื่อหลีกเลี่ยงความสับสน ฉันขอแนะนำให้ใช้ ros kinetic และ ubuntu 16.04 เนื่องจากมีการสนับสนุน ros-kinetic ที่ดีที่สุด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการติดตั้ง ros kinetic ไปที่ https://wiki.ros.org/kinetic/Installation/Ubuntu สำหรับ MATLAB คุณซื้อใบอนุญาตหรือดาวน์โหลดเวอร์ชันทดลองจากที่นี่
ขั้นตอนที่ 2: ทำความเข้าใจว่าคอนโทรลเลอร์ทำงานอย่างไร
พีซีใช้งานตัวควบคุมหุ่นยนต์บน MATLAB คอนโทรลเลอร์รับที่อยู่ IP และพอร์ตของ ros pc/robot
ros-topic ใช้ในการสื่อสารระหว่างคอนโทรลเลอร์กับ ros pc/robot ซึ่งคอนโทรลเลอร์ก็ใช้เป็นอินพุตเช่นกัน จำเป็นต้องใช้โมเด็มเพื่อสร้าง LAN (เครือข่ายท้องถิ่น) และเป็นสิ่งที่กำหนดที่อยู่ IP ให้กับอุปกรณ์ทั้งหมดที่เชื่อมต่อกับเครือข่าย ดังนั้น ros pc/robot และ pc ที่ใช้งานคอนโทรลเลอร์จะต้องเชื่อมต่อกับเครือข่ายเดียวกัน (เช่น เครือข่ายของโมเด็ม) ตอนนี้คุณรู้แล้วว่า "มันทำงานอย่างไร" มาที่ "วิธีสร้าง" กัน…
ขั้นตอนที่ 3: การสร้างอินเทอร์เฟซ ROS-MATLAB
ROS-MATLABInterface เป็นอินเทอร์เฟซที่มีประโยชน์สำหรับนักวิจัยและนักศึกษาในการสร้างต้นแบบอัลกอริธึมหุ่นยนต์ใน MATLAB และทดสอบกับหุ่นยนต์ที่เข้ากันได้กับ ROS อินเทอร์เฟซนี้สามารถสร้างขึ้นโดยกล่องเครื่องมือระบบหุ่นยนต์ใน MATLAB และเราสามารถสร้างต้นแบบอัลกอริทึมของเราและทดสอบได้ หุ่นยนต์ที่เปิดใช้งาน ROS หรือในหุ่นยนต์จำลอง เช่น Gazebo และ V-REP
ในการติดตั้งกล่องเครื่องมือระบบหุ่นยนต์บน MATLAB ของคุณ เพียงไปที่ตัวเลือก Add-on บนแถบเครื่องมือ แล้วค้นหากล่องเครื่องมือหุ่นยนต์ในโปรแกรมสำรวจส่วนเสริม การใช้กล่องเครื่องมือหุ่นยนต์ เราสามารถเผยแพร่หรือสมัครสมาชิกหัวข้อ เช่น โหนด ROS และเราสามารถทำให้เป็นต้นแบบ ROS ได้ อินเทอร์เฟซ MATLAB-ROS มีฟังก์ชัน ROS ส่วนใหญ่ที่คุณต้องการสำหรับโครงการของคุณ
ขั้นตอนที่ 4: รับที่อยู่ IP
เพื่อให้คอนโทรลเลอร์ทำงานได้ คุณจำเป็นต้องทราบที่อยู่ IP ของหุ่นยนต์/พีซี ROS ของคุณและพีซีที่ใช้งานคอนโทรลเลอร์บน MATLAB
ในการรับ IP ของพีซีของคุณ:
บน Windows:
เปิดพรอมต์คำสั่งแล้วพิมพ์คำสั่ง ipconfig และจดที่อยู่ IPv4
สำหรับลินุกซ์:
พิมพ์คำสั่ง ifconfig และจดที่อยู่ inet เมื่อคุณมีที่อยู่ IP แล้ว ก็ถึงเวลาสร้าง GUI…
ขั้นตอนที่ 5: สร้าง GUI สำหรับคอนโทรลเลอร์
ในการสร้าง GUI ให้เปิด MATLAB และพิมพ์ guide ในหน้าต่างคำสั่ง ซึ่งจะเป็นการเปิดแอพแนะนำ ซึ่งเราจะสร้าง GUI ของเรา คุณยังสามารถใช้ตัวออกแบบแอปบน MATLAB เพื่อออกแบบ GUI ของคุณได้
เราจะสร้างปุ่มทั้งหมด 9 ปุ่ม (ดังแสดงในรูป):
ปุ่มกด 6 ปุ่ม: เดินหน้า ถอยหลัง ซ้าย ขวา เชื่อมต่อกับหุ่นยนต์ ตัดการเชื่อมต่อ
3 ปุ่มที่แก้ไขได้: Ros pc ip, พอร์ตและชื่อหัวข้อ
ปุ่มที่แก้ไขได้คือปุ่มที่จะใช้ ip ของ ROS pc เป็นพอร์ตและชื่อหัวข้อเป็นอินพุต ชื่อหัวข้อคือสิ่งที่ตัวควบคุม MATLAB และโรบ็อต/พีซี ROS สื่อสารผ่าน หากต้องการแก้ไขสตริงบนปุ่มที่แก้ไขได้ ให้คลิกขวาที่ปุ่ม >> ไปที่คุณสมบัติตัวตรวจสอบ >>สตริง และแก้ไขข้อความของปุ่ม
เมื่อ GUI ของคุณเสร็จสมบูรณ์ คุณสามารถตั้งโปรแกรมปุ่มต่างๆ ได้ นี่คือจุดเริ่มต้นของความสนุกที่แท้จริง…
ขั้นตอนที่ 6: การเขียนโปรแกรมปุ่ม GUI ที่แก้ไขได้
GUI ถูกบันทึกเป็นไฟล์.fig แต่ฟังก์ชันโค้ด/การโทรกลับจะถูกบันทึกในรูปแบบ.m ไฟล์.m มีรหัสสำหรับปุ่มทั้งหมดของคุณ หากต้องการเพิ่มฟังก์ชันการโทรกลับให้กับปุ่มของคุณ ให้คลิกขวาที่ปุ่ม > >ดูการโทรกลับ>>โทรกลับ ซึ่งจะเปิดไฟล์.m สำหรับ GUI ของคุณไปยังตำแหน่งที่กำหนดปุ่มนั้นไว้
การโทรกลับครั้งแรกที่เราจะเขียนโค้ดคือปุ่มที่แก้ไข ROS IP ได้ ภายใต้ฟังก์ชัน edit1_Callback เขียนโค้ดต่อไปนี้:
ฟังก์ชัน edit1_Callback(hObject, eventdata, handles)
ros_master_ip ทั่วโลก
ros_master_ip = รับ (hObject, 'สตริง')
ในที่นี้ ฟังก์ชันถูกกำหนดเป็น edit1_Callback ซึ่งหมายถึงปุ่มแรกที่แก้ไขได้ เมื่อเราป้อนที่อยู่ IP จากเครือข่าย ROS ในปุ่มที่แก้ไขได้ ระบบจะเก็บที่อยู่ IP เป็นสตริงในตัวแปรส่วนกลางที่เรียกว่า ros_master_ip
จากนั้นภายใต้ _OpeningFcn(hObject, eventdata, handles, varargin) ให้กำหนดสิ่งต่อไปนี้ (ดูรูปที่):
ros_master_ip ทั่วโลก
global ros_master_port
โกลบอล teleop_topic_name
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/input/teleop';
คุณเพิ่งฮาร์ดโค้ดทั่วโลก ros-pc ip (ros_master_ip) พอร์ต (ros_master_port) และชื่อ Teleop Topic สิ่งนี้ทำคือถ้าคุณปล่อยปุ่มที่แก้ไขได้ว่างไว้ ค่าที่กำหนดไว้ล่วงหน้าเหล่านี้จะถูกใช้เมื่อคุณเชื่อมต่อ
การโทรกลับครั้งต่อไปที่เราจะเขียนโค้ดคือปุ่มแก้ไขพอร์ต
ภายใต้ฟังก์ชัน edit2_Callback เขียนโค้ดต่อไปนี้:
ฟังก์ชัน edit2_Callback(hObject, ข้อมูลเหตุการณ์, แฮนเดิล)
global ros_master_port
ros_master_port = รับ (hObject, 'สตริง')
ในที่นี้ ฟังก์ชันถูกกำหนดเป็น edit2_Callback ซึ่งหมายถึงปุ่มที่แก้ไขได้ที่สอง เมื่อเราป้อนพอร์ตของ ros pc/robot ที่นี่จากเครือข่าย ROS ในปุ่มที่แก้ไขได้นี้ ระบบจะเก็บพอร์ตดังกล่าวเป็นสตริงในตัวแปรส่วนกลางที่เรียกว่า ros_master_port
ในทำนองเดียวกัน การโทรกลับครั้งต่อไปที่เราจะเขียนโค้ดก็คือปุ่มที่แก้ไขชื่อหัวข้อได้
ภายใต้ฟังก์ชัน edit3_Callback เขียนโค้ดต่อไปนี้:
ฟังก์ชัน edit3_Callback(hObject, ข้อมูลเหตุการณ์, แฮนเดิล)
โกลบอล teleop_topic_name
teleop_topic_name = รับ (hObject, 'สตริง')
คล้ายกับ ros_master_port สิ่งนี้ถูกจัดเก็บเป็นสตริงในตัวแปรส่วนกลาง
ต่อไปเราจะมาดูฟังก์ชั่นการโทรกลับของปุ่มกด…
ขั้นตอนที่ 7: การเขียนโปรแกรมปุ่มกด GUI
ปุ่มกดที่เราสร้างไว้ก่อนหน้านี้คือปุ่มที่เราจะใช้ในการเคลื่อนย้าย เชื่อมต่อ และตัดการเชื่อมต่อหุ่นยนต์จากตัวควบคุม การเรียกกลับของปุ่มกดถูกกำหนดดังนี้:
เช่น. ฟังก์ชัน pushbutton6_Callback(hObject, eventdata, handles)
หมายเหตุ: ขึ้นอยู่กับลำดับที่คุณสร้างปุ่มกด ปุ่มเหล่านั้นจะถูกกำหนดหมายเลขตามลำดับ ดังนั้นฟังก์ชั่น pushbutton6 ในไฟล์.m ของฉันอาจเป็น Forward ในขณะที่ในไฟล์.m ของคุณ อาจเป็น Backwards ดังนั้นโปรดจำไว้เสมอว่า หากต้องการทราบฟังก์ชันที่แน่นอนสำหรับปุ่มกดของคุณ เพียงคลิกขวา>>ดูการเรียกกลับ>>การโทรกลับ และมันจะเปิดฟังก์ชันสำหรับปุ่มกดของคุณ แต่สำหรับคำสั่งนี้ ฉันคิดว่ามันเหมือนกับของฉัน
สำหรับปุ่มเชื่อมต่อกับหุ่นยนต์:
ภายใต้ฟังก์ชัน pushbutton6_Callback(hObject, eventdata, handles):
ฟังก์ชั่น pushbutton6_Callback(hObject, eventdata, handles) global ros_master_ip
global ros_master_port
โกลบอล teleop_topic_name
หุ่นยนต์ระดับโลก
โลก velmsg
ros_master_uri = strcat('https://', ros_master_ip, ':', ros_master_port)
setenv('ROS_MASTER_URI', ros_master_uri)
โรซินิท
หุ่นยนต์ = rospublisher (teleop_topic_name, 'geometry_msgs/Twist');
velmsg = rosmessage(หุ่นยนต์);
การเรียกกลับนี้จะตั้งค่าตัวแปร ROS_MASTER_URI โดยการต่อ ros_master_ip กับพอร์ต จากนั้นคำสั่ง rosinit จะเริ่มต้นการเชื่อมต่อ หลังจากเชื่อมต่อแล้ว จะสร้างผู้เผยแพร่ของ geometry_msgs/Twist ซึ่งจะใช้สำหรับส่งคำสั่งความเร็ว ชื่อหัวข้อคือชื่อที่เราให้ในกล่องแก้ไข เมื่อการเชื่อมต่อสำเร็จ เราจะสามารถกดปุ่ม Forward, Backward, Left, Right ได้
ก่อนเพิ่มการเรียกกลับไปยังปุ่มกดเดินหน้า ถอยหลัง เราจำเป็นต้องเริ่มต้นความเร็วของความเร็วเชิงเส้นและความเร็วเชิงมุม
ดังนั้นด้านล่าง _OpeningFcn(hObject, eventdata, handles, varargin) กำหนดสิ่งต่อไปนี้ (ดูรูปที่):
global left_spinVelocity ทั่วโลก right_spinVelocity
Global forwardVelocity
โกลบอลย้อนกลับVelocity
left_spinVelocity = 2;
right_spinVelocity = -2;
ความเร็วไปข้างหน้า = 3;
ย้อนกลับความเร็ว = -3;
หมายเหตุ: ความเร็วทั้งหมดอยู่ใน rad/s
เมื่อกำหนดตัวแปรส่วนกลางแล้ว เรามาตั้งโปรแกรมปุ่มกดเคลื่อนไหวกัน
สำหรับปุ่มกดไปข้างหน้า:
ฟังก์ชัน pushbutton4_Callback(hObject, eventdata, handles) global velmsg
หุ่นยนต์ระดับโลก
โกลบอล teleop_topic_name
Global forwardVelocity
velmsg. Angular. Z = 0;
velmsg. Linear. X = ความเร็วไปข้างหน้า;
ส่ง(หุ่นยนต์, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', จริง);
ในทำนองเดียวกันสำหรับปุ่มกดย้อนกลับ:
ฟังก์ชัน pushbutton5_Callback(hObject, eventdata, handles)
โลก velmsg
หุ่นยนต์ระดับโลก
โกลบอลย้อนกลับVelocity
โกลบอล teleop_topic_name
velmsg. Angular. Z = 0;
velmsg. Linear. X = ย้อนกลับความเร็ว;
ส่ง(หุ่นยนต์, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', จริง);
ในทำนองเดียวกันสำหรับปุ่มกดซ้าย: ฟังก์ชั่น pushbutton3_Callback(hObject, eventdata, handles)
global velmsgglobal หุ่นยนต์ global left_spinVelocity
โกลบอล teleop_topic_name
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
ส่ง(หุ่นยนต์, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', จริง);
ในทำนองเดียวกันสำหรับปุ่มกดขวา:
โลก velmsgglobal หุ่นยนต์
ทั่วโลก right_spinVelocity
โกลบอล teleop_topic_name
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
ส่ง(หุ่นยนต์, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', จริง);
เมื่อเพิ่มฟังก์ชันการโทรกลับทั้งหมดและบันทึกไฟล์แล้ว เราสามารถทดสอบตัวควบคุมของเราได้
ขั้นตอนที่ 8: การตั้งค่าการกำหนดค่าเครือข่ายบน ROS PC (Linux)
เราจะทำการทดสอบคอนโทรลเลอร์บน ros pc (Linux) ซึ่งจะต้องมีการตั้งค่าคอนฟิกเครือข่าย หากคุณใช้งานคอนโทรลเลอร์บน linux pc ด้วย คุณจะต้องตั้งค่าคอนฟิกเครือข่ายที่นั่นด้วย
การกำหนดค่าเครือข่าย:
เปิดหน้าต่างเทอร์มินัลแล้วพิมพ์ gedit.bashrc
เมื่อเปิดไฟล์แล้วให้เพิ่มสิ่งต่อไปนี้:
#การกำหนดค่าเครื่องหุ่นยนต์
ส่งออก ROS_MASTER_URI=https://localhost:11311
#IP address ของ ROS master node
ส่งออก ROS_HOSTNAME=
ส่งออก ROS_IP=
echo "ROS_HOSTNAME: " $ROS_HOSTNAME
echo "ROS_IP:"$ROS_IP
echo "ROS_MASTER_URI:"$ROS_MASTER_URI
คุณต้องทำตามขั้นตอนนี้ทุกครั้งเนื่องจากการกำหนด IP แบบไดนามิก
ขั้นตอนที่ 9: เรียกใช้คอนโทรลเลอร์
เราจะทดสอบคอนโทรลเลอร์ของเรากับ Turtle bot ใน Gazebo
หากต้องการติดตั้ง Gazebo โปรดดู
หากต้องการติดตั้ง Turtle bot โปรดดูที่
เปิดโฟลเดอร์ที่คุณบันทึกไฟล์.fig และ.m บน MATLAB แล้วกด Run (ดังแสดงในรูปภาพ) ซึ่งจะเป็นการเปิดคอนโทรลเลอร์บนพีซี ก่อนกดเชื่อมต่อ ตรวจสอบให้แน่ใจว่าโปรแกรมจำลองบอทเต่าของคุณทำงาน
วิธีทดสอบการจำลอง TurtleBot ของคุณ:
เปิด Terminal บน Ros pc แล้วพิมพ์: $ roslaunch turtlebot_gazebo turtlebot_world.launch นี่จะเป็นการเปิดการจำลอง Turtlebot บนพีซีเครื่องนั้น ชื่อหัวข้อของ TurtleBot คือ /cmd_vel_mux/input/teleop ซึ่งเราได้ระบุไว้ในแอปพลิเคชันแล้ว พิมพ์ที่อยู่ IP ของ ros pc พอร์ต และชื่อหัวข้อในปุ่มที่แก้ไขได้ และกดปุ่ม เชื่อมต่อกับหุ่นยนต์ บอทเต่าของคุณควรเริ่มเคลื่อนไหวเมื่อคุณกด Forward, Backward ฯลฯ
ในการดูความเร็วเชิงเส้นและเชิงมุม:
เปิดเทอร์มินัลใหม่และพิมพ์คำสั่ง: $ rostopic echo /cmd_vel_mux/input/teleop
และที่นั่น คุณมี ROS Robotic Controller ที่ใช้ Matlab ของคุณเอง หากคุณชอบคำแนะนำของฉันโปรดให้คะแนนในการประกวดผู้แต่งครั้งแรกและแชร์กับผู้คนให้มากที่สุด ขอขอบคุณ.
แนะนำ:
เครื่องอ่าน RFID ที่ใช้ ESP32 พร้อมจอแสดงผลแบบสัมผัส: 7 ขั้นตอน
เครื่องอ่าน RFID แบบใช้ ESP32 พร้อมจอแสดงผลแบบสัมผัส: ในคำแนะนำเล็ก ๆ นี้ฉันจะแสดงวิธีสร้างเครื่องอ่าน RFID อย่างง่ายพร้อมเอาต์พุต TFT สำหรับการติดตั้งบนผนังโดยใช้โมดูล ESP32 DEV KIT C, pcb เครื่องอ่านที่ใช้ RC-522 และชุด AZ-Touch ESP คุณสามารถใช้เครื่องอ่านนี้สำหรับการเข้าถึงประตูหรือสัญญาณเตือนผู้บุกรุก
นาฬิกา LED ที่ใช้ Neopixels: 4 ขั้นตอน (พร้อมรูปภาพ)
นาฬิกา LED ที่ใช้ Neopixels: ยินดีต้อนรับสู่คำแนะนำของฉันเกี่ยวกับวิธีสร้างนาฬิกา LED โดยใช้ 60 Neopixels คุณจะพบไฟล์ PDF 3 ไฟล์ที่แนบมา ไฟล์หนึ่งสำหรับส่วนของนาฬิกา อีกอันสำหรับฐาน และอันสุดท้ายคือเทมเพลตเพื่อช่วยในการติดกาว ส่วนต่างๆ เข้าด้วยกัน เพื่อคอม
เป็นไปได้ไหมที่จะถ่ายโอนรูปภาพโดยใช้อุปกรณ์ IoT ที่ใช้ LPWAN: 6 ขั้นตอน
เป็นไปได้ไหมที่จะถ่ายโอนภาพถ่ายโดยใช้อุปกรณ์ IoT ที่ใช้ LPWAN: LPWAN ย่อมาจาก Low Power Wide Area Network และเป็นเทคโนโลยีการสื่อสารที่เหมาะสมมากในด้าน IoT เทคโนโลยีที่เป็นตัวแทน ได้แก่ Sigfox, LoRa NB-IoT และ LTE Cat.M1 เหล่านี้เป็นเทคโนโลยีการสื่อสารทางไกลที่ใช้พลังงานต่ำทั้งหมด ในเก
กล้อง IP ที่ใช้ Raspberry Pi Zero (การเฝ้าระวังที่บ้าน ตอนที่ 1): 5 ขั้นตอน
กล้อง IP ที่ใช้ Raspberry Pi Zero (Home Surveillance Part 1): นี่เป็นโพสต์แรกในมินิซีรีส์ใหม่ที่เราสร้างระบบเฝ้าระวังภายในบ้านโดยใช้ Raspberry Pis เป็นหลัก ในโพสต์นี้ เราใช้ Raspberry PI zero และสร้างกล้อง IP ที่สตรีมวิดีโอผ่าน RTSP วิดีโอเอาต์พุตมี q ที่สูงกว่ามาก
ROS MoveIt Robotic Arm Part 2: Robot Controller: 6 ขั้นตอน
ROS MoveIt Robotic Arm ตอนที่ 2: Robot Controller: https://github.com/AIWintermuteAI/ros-moveit-arm.gitในส่วนก่อนหน้าของบทความ เราได้สร้างไฟล์ URDF และ XACRO สำหรับแขนหุ่นยนต์ของเรา และเปิดตัว RVIZ เพื่อควบคุมของเรา แขนกลหุ่นยนต์ในสภาพแวดล้อมจำลอง ครั้งนี้เราจะทำกับเรีย