Skip to content

Commit 5789e49

Browse files
Mikamimkhansenbot
Mikami
authored andcommitted
[Update]Add and modify the sample codes. Following that, edit dockerfile
1 parent c83b47b commit 5789e49

File tree

5 files changed

+82
-27
lines changed

5 files changed

+82
-27
lines changed

space_robots/Dockerfile

+5-2
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,14 @@ RUN sudo usermod -aG render $USERNAME
137137
RUN mkdir -p /demos_ws/
138138
COPY generate_src.py /demos_ws/
139139
COPY sample_code_by_gpt.py /demos_ws/
140-
COPY config_dummy.json /demos_ws/
140+
COPY sample_code_turn_left_by_gpt.py /demos_ws/
141+
COPY config.json /demos_ws/
141142
COPY prompt.txt /demos_ws/
142143

143144
# Grant execute permissions to Python scripts (if needed)
144-
RUN chmod +x /demos_ws/generate_src.py /demos_ws/sample_code_by_gpt.py
145+
RUN chmod +x /demos_ws/generate_src.py /demos_ws/sample_code_by_gpt.py /demos_ws/sample_code_turn_left_by_gpt.py
146+
147+
RUN pip install openai
145148
# 変更箇所終了
146149

147150

space_robots/config.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"openai_api_key": "SK-xxxxx",
3+
"openai_model": "gpt-4o-2024-08-06"
4+
}
5+

space_robots/run.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ IMG_NAME=osrf/space_robots_demo
1010

1111
# Replace `/` with `_` to comply with docker container naming
1212
# And append `_runtime`
13-
CONTAINER_NAME="my_test_2"
13+
CONTAINER_NAME="my_test_1"
1414
#"$(tr '/' '_' <<< "$IMG_NAME")"
1515

1616
# Start the container

space_robots/sample_code_by_gpt.py

+34-24
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,45 @@
1+
#This code is generated by inputting "Rover goes forward 10m/s during 20 seconds"
2+
#after 'python3 generate_src.py'
3+
14
import rclpy
25
from rclpy.node import Node
36
from geometry_msgs.msg import Twist
47
from time import sleep
58

6-
class DifferentialRoverNode(Node):
9+
class RoverController(Node):
10+
711
def __init__(self):
8-
super().__init__('differential_rover_node')
9-
self.publisher = self.create_publisher(Twist, '/cmd_vel', 10)
10-
self.create_timer(0.1, self.timer_callback) # Publish every 0.1 seconds
11-
self.movement_duration = 20 # Move for 20 seconds
12-
self.start_time = self.get_clock().now().to_msg().sec
13-
14-
def timer_callback(self):
15-
current_time = self.get_clock().now().to_msg().sec
16-
if current_time - self.start_time < self.movement_duration:
17-
move_cmd = Twist()
18-
move_cmd.linear.x = 10.0 # Move forward at 10m/s
19-
move_cmd.angular.z = 0.0 # No rotation
20-
self.publisher.publish(move_cmd)
21-
else:
22-
self.stop_movement()
23-
24-
def stop_movement(self):
25-
move_cmd = Twist() # Create a new message to stop the robot
26-
self.publisher.publish(move_cmd)
27-
self.get_logger().info('Stopping')
28-
self.destroy_node()
12+
super().__init__('rover_controller')
13+
self.publisher_ = self.create_publisher(Twist, '/cmd_vel', 10)
14+
self.timer = self.create_timer(0.1, self.publish_cmd_vel)
15+
self.start_time = self.get_clock().now()
16+
17+
def publish_cmd_vel(self):
18+
current_time = self.get_clock().now()
19+
elapsed_time = (current_time - self.start_time).nanoseconds / 1e9
20+
21+
if elapsed_time > 20:
22+
self.timer.cancel() # Stop publishing after 20 seconds
23+
self.get_logger().info('Stopped sending velocity commands.')
24+
return
25+
26+
cmd_vel = Twist()
27+
cmd_vel.linear.x = 10.0 # Forward speed in m/s
28+
cmd_vel.angular.z = 0.0 # No rotation
29+
30+
self.publisher_.publish(cmd_vel)
31+
self.get_logger().info('Publishing: Linear X: %f, Angular Z: %f' %
32+
(cmd_vel.linear.x, cmd_vel.angular.z))
33+
2934

3035
def main(args=None):
3136
rclpy.init(args=args)
32-
node = DifferentialRoverNode()
33-
rclpy.spin(node)
37+
rover_controller = RoverController()
38+
rclpy.spin(rover_controller)
39+
40+
rover_controller.destroy_node()
3441
rclpy.shutdown()
3542

43+
44+
if __name__ == '__main__':
45+
main()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import rclpy
2+
from rclpy.node import Node
3+
from geometry_msgs.msg import Twist
4+
import time
5+
6+
class RoverController(Node):
7+
def __init__(self):
8+
super().__init__('rover_controller')
9+
self.publisher_ = self.create_publisher(Twist, 'cmd_vel', 10)
10+
11+
def publish_cmd_vel(self):
12+
twist = Twist()
13+
# Set linear velocity to move forward
14+
twist.linear.x = 5.0
15+
# Set angular velocity for turning left
16+
twist.angular.z = 1.0
17+
18+
# Publish the velocity command for 10 seconds
19+
end_time = time.time() + 10
20+
while time.time() < end_time:
21+
self.publisher_.publish(twist)
22+
time.sleep(0.1)
23+
24+
def main(args=None):
25+
rclpy.init(args=args)
26+
rover_controller = RoverController()
27+
28+
try:
29+
rover_controller.publish_cmd_vel()
30+
finally:
31+
# Destroy the node explicitly
32+
rover_controller.destroy_node()
33+
rclpy.shutdown()
34+
35+
if __name__ == '__main__':
36+
main()
37+

0 commit comments

Comments
 (0)