Professional Documents
Culture Documents
Legged Robotic System
Legged Robotic System
Internship Report
2024 July
Submitted by
1.Kedar Dhavale
2.Avinash Chandore
3.Vaibhav Pangarkar
4.Sainath Ingle
Mentor
Abhijit Kamble, Sc 'F'
R&DE(E), DRDO, Pune
Index
1.Introduction
2.Background
3.Problem Statement
4.Hardware Requirments
5.software requirements
6.Implementation
7.References
1. Introduction
This introduction sets the stage for an exploration into the technical
details, implementation strategies, and practical applications of ROS
and Flutter in the context of Lagged robotic systems. By the end of
this project, we are making the less repose time for robot less than
1ms.
2. Background
3. Problem Statment :
To reduce the response time of the robot which is less than 1 ms.
Software Requirments :
● Operating System
● ROS Distribution
● DDS Implementation
● Real-Time Middleware and Libraries
● Development Tools
● Google Flutter
ROS Distribution :
Latest stable release of ROS 2, such as Foxy Fitzroy, Galactic
Geochelone, or Humble Hawksbill.
ROS 2 has better support for real-time operations compared to ROS
DDS Implementation:
Fast DDS & Cyclone DDS:
Development Tools:
Profiling and Debugging Tools:
Google Flutter:
Combination with ros to make an application.
Flutter is Google SDK to build mobile applications for both iOS and
Android. Robot Operating System is a framework for making robots.
We would combine these technologies and build an application to
control a robot.
Hardware Requirments :
2. Memory (RAM)
Architecture Overview
Implementation :
1. Install ROS
2. Install Vim
3. Setup resources
4. Create Environment
5. Create binary for the Hardware control and add a node
import
'package:flutter/materi
al.dart';
import 'package:roslib/roslib.dart';
@override
Ros ros;
Topic chatter;
Topic counter;
Topic cmd_vel;
@override
void initState() {
ros = Ros(url:
'ws://192.168.1.4:9090');
chatter = Topic(
ros: ros,
name: '/chatter',
type: "std_msgs/String",
reconnectOnClose: true,
queueLength: 10,
queueSize: 10);
cmd_vel = Topic(
ros: ros,
name: '/cmd_vel',
type: "geometry_msgs/Twist",
reconnectOnClose: true,
queueLength: 10,
queueSize: 10);
counter = Topic(
ros: ros,
name: '/counter',
type: "std_msgs/String",
reconnectOnClose: true,
queueSize: 10,
queueLength: 10,
);
super.initState();
ros.connect();
await chatter.subscribe();
await counter.advertise();
await cmd_vel.advertise();
setState(() {});
await counter.publish(msg);
print('done publihsed');
await cmd_vel.publish(twist);
print('cmd published');
await chatter.unsubscribe();
await counter.unadvertise();
await ros.close();
setState(() {});
@override
return StreamBuilder<Object>(
stream: ros.statusStream,
return Center(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.center,
mainAxisAlignment:
MainAxisAlignment.center,
children: [
ActionChip(
label: Text(snapshot.data
== Status.CONNECTED
? 'DISCONNECT'
: 'CONNECT'),
backgroundColor:
snapshot.data == Status.CONNECTED
? Colors.green[300]
: Colors.grey[300],
onPressed: () {
print(snapshot.data);
if (snapshot.data !=
Status.CONNECTED) {
this.initConnection();
} else {
this.destroyConnection();
},
),
StreamBuilder(
stream:
chatter.subscription,
builder: (context2,
snapshot2) {
if (snapshot2.hasData)
{
return
Text('${snapshot2.data['msg']}');
} else {
return
CircularProgressIndicator();
}
},
),
RaisedButton(onPressed: ()
{
publishCounter();
}),
RaisedButton(onPressed: ()
{
publishCmd();
}),
],
),
);
},
);
1. Add Libraries
2. Create a clone for the robot
3. Add dependencies
4. Manage the motors, sensors through the ROS function
5. Provide data for the same.
References
1. https://www.ros.org/
2. https://www.spiceworks.com/tech/artificial-intelligence/articl
es/what-is-robot-operating-system/
3. https://flutter.dev/
4. https://docs.ros.org/en/foxy/index.html