Total Pageviews

Saturday, September 13, 2014

Jetson TK1 : boot problem - issue with libglx.so

You know something went wrong when things goes too smoothly. After flash the board for a few time to fix WiFi driver and install ROS Indigo my screen black out went I try to reboot it. Screen show streams of text while booting, then Nvidia logo show up and then went blank after that.

Don't to flash it once again, I search some more and found that I am not the only one and this (luckily). Problem, figure out by this guy, is that file libglx.so being replace by some update or process causing the board can't display properly. The fix is easy, go back to your host computer's download folder where you download Tegra124_Linux_R19.3.0_armhf.tbz2 package when to prepare to compile The Grinch kernel.
  • Unpack Tegra124_Linux_R19.3.0_armhf.tbz2
    • You we get Linux_for_Tegra folder.
  • Find Linux_for_Tegra/nv_tegra/nvidia_drivers.tbz2 and unpack it.
  • Navigate to usr/lib/xorg/modules/extensions/ there you will have the original libglx.so file.
  • Copy the original libglx.so file from host computer to the TK1 board, place it in the same usr/lib/xorg/modules/extensions/ folder. You may backup the TK1's libglx.so file first by change its name to something like libglx.so.bak
  • Cross your finger and reboot. 
  • If you boot into Ubuntu GUI screen then you're done! better to keep the new libglx.so file just in case we need it again. By copy and rename it to libglx.so.original.
 I hope all the smart guys at Nvidia will figure out the cause and way to get around this soon.

Jetson TK1, day2


https://devtalk.nvidia.com/default/topic/747574/embedded-systems/jetson-tk1-boot-issue/?offset=17#4308726

The problem is that after I move to The Grinch kernel and do some update & upgrade I can't reboot back to the Ubuntu screen. I tried ssh into it and its seem to working just fine. No choice, I decided to flash the board again, but I got a message "flash fail" and hence process to follow the Hint #1. After 2 times of flashing the board, problem still persist.

I then try to undo the Hint #1 by (follow this link for instructions)

remove
losetup --find --show system.img
And replace with
losetup /dev/loop0 system.img > /dev/null 2>&1
And flash it one more time. This time I able to update & upgrade and install ROS indigo (for ARM, bare-bone package) while able to reboot back to Ubuntu screen.

PS: I also tried to install ROS Indigo from source, which went fine, but actually someone (up there?) make an installation for Ubuntu-ARM architecture already, you can follow a link here.

Things went too smoothly, what else can go wrong? ... my Ubuntu screen gone again :(

Friday, September 12, 2014

Jetson TK1, day1



I recently got this new, cheap development from Nvidia called Jetson Tk1. The main highlight of these board is that its contain 192 GPU core inside. Unlike another microcomputer board like Raspberry Pi or BeagleBone black, TK1 is able to run Ubuntu 14.04 (ARM version) with decent graphic and response.

I got my board from newEgg website for around 300 SGD, for some reason you cannot buy the board from Nvidia's website if you are not in the US.
 
First boot-up went fine, just plug-in the 12 volt power supply that come with the board and it will boot into command-line screen. There you will see Nvidia driver install script, just execute that and it will restart and land you to Ubuntu's GUI screen.

Unfortunately, the kernel that chipped with TK1 (at least the one I got) doesn't support WiFi dongle. Searching around the web gave me 2 options.

Option 1:
Download RTL8192CU here and follow the procedure in comment #9 to include the driver into current kernel.

Option 2:
Follow an instruction from Nvidia development forum to upgrade kernel to The Grinch which added support for Wifi dongle and many more device.

I don't think totally wipe out an original kernel (option 2) since day 1 is not a very good idea, so I go for option 1, which went smoothly. After reboot the TK1 detect my WiFi dongle and able to connect to WiFi network with ease of Network manager with GUI.

After a while (like 10 minutes) I thought move on to The Grinch (option 2) might be a better ideal because I am planing to install ROS and OpenCV onto it, upgrade a kernel after will not be so easy.

That's when problems start to come up ...

Friday, July 12, 2013

Configure ROS package rosserial on Ubuntu

Some commonly missing step after install arduino IDE is forget to add yourself into "dialout" and "tty" group. You can do so by the following command.

$sudo usermod -a -G tty yourUserName
and
$sudo usermod -a -G dialout yourUserName

To use rosserial, after you have done everything in the rosserial's tutorial and try to complie (or verify) your code you might got an error message like the following :

In file included from /Users/kevin/Documents/Arduino/libraries/ros_lib/ros.h:39,
             from HelloWorld.cpp:6:
  /Users/kevin/Documents/Arduino/libraries/ros_lib/ArduinoHardware.h:38:22: error: WProgram.h: No such file or directory

You fix it by go to the mentioned file, in this case, located at "/Users/kevin/Documents/Arduino/libraries/ros_lib/"

$cd /Users/kevin/Documents/Arduino/libraries/ros_lib/
$gedit ArduinoHardware.h

Replace the line "#include WProgram.h" with the following

  #if defined(ARDUINO) && ARDUINO >= 100
 #include "Arduino.h"
 #else
 #include "WProgram.h"
 #endif

Go back to the IDE and compile the code again, and it should be fine. 

Thursday, July 11, 2013

Setup Canon iRC2380i printer on Linux Ubuntu

Canon-Europe website provide Linux driver for Canon iRC2380i printer. Just download CQue 2.0.5 Linux Driver DEB (32 bits or 64 bits version, depend on your machine) from the link. After download, double-click on the DEB file and Ubuntu Software Center should come up and you can install it from there.

After driver is installed successfully, go to System Settings -> Printing -> Add -> Click on Network Printer and wait for a while. Canon C2380/2550 should be on the list and you are done.


However, SMART need to set up  a department account (department ID and password) to protect the printer from unauthorized users. Unfortunately, the driver doesn’t support department account directly from GUI. The following guide will show how to do just that.


After you install the CQue Linux driver as mentioned above, you should have PPD folder locate at /opt/cel/ppd.

  • In terminal
$cd /opt/cel/ppd
$ls

  • Here you will see a long list of supported drivers, our Canon iRC2380i’s driver is named “cel-irc1028-pcl-en.ppd.gz” we need to unzip (using gzip) and modify it.
still in the /opt/cel/ppd folder
$gzip -d cel-irc1028-pcl-en.ppd.gz

  • Now you should have unziped file named “cel-irc2380-pcl-en.ppd” which we need to modify.
$sudo gedit cel-irc2380-pcl-en.ppd

  • Locate a line similar to (you can use find function (Ctrl+f) in gedit to find this line)
*NickName: "Canon iR C2380/2550 PCL
And modify it to
*NickName: "Canon iR C2380/2550 PCL SMART”

  • And also locate line
*ShortNickName: "Canon iR C2380/2550 PCL"
And modify it to
*ShortNickName: "Canon iR C2380/2550 PCL SMART"

  • Next locate line
*DefaultUserID: None
And modify “None” to your department’s ID, for example
*DefaultUserID: 12345

  • Last Locate line
*DefaultUserPassword: None
And modify “None” to your department’s password, for example
*DefaultUserPassword: 6789

  • You are done! Save the file and exit.

  • Back to System Settings -> Printing you should see the Canon iRC2380i icon there. Right-click -> Properties -> Settings -> Make and Model -> Change -> Choose “Provide PPD file” -> on the sidebar click on “File system” -> opt -> cel -> ppd -> chose the cel-irc2380-pcl-en.ppd we just edited. -> Select option “Use the new PPD … as is”

  • Now you will be back to Printer Properties window, in Settings you should see the Make and Model field is now write “Canon iR C2380/2550 PCL SMART”, which indicate that the printer are now using the PPD file we just edited.

  • Everything’s done … go try to print something.


Reference : XIN.at
Tested on Ubuntu 12.04 on 11 Jul 2013.

Wednesday, July 10, 2013

Fix an error when run apt-get update

I got an error after run an apt-get update recently, the error message look like these

W: Failed to fetch http://ppa.launchpad.net/jonls/redshift-ppa/ubuntu/dists/precise/main/source/Sources  404  Not Found

To fix it you can run the following command

gksu software-properties-gtk

and remove the problematic package (ppa.launchpad.net in this case), and then try apt-get update again.

Tuesday, July 9, 2013

Remove lengthly word from command promtp

There are many kind of script out there,but this is what suite me best. The script limit a command prompt to 30 character, if longer than that its will show only the first 12 and last 15 characters. The "\h" in the last line is added to show a hostname, convenient if you often work on remote machine.

To use, just put the following text in ./bashrc file. 

#--- Custom terminal, cutout lengthly word ---
PROMPT_COMMAND='DIR=`pwd|sed -e "s!$HOME!~!"`; if [ ${#DIR} -gt 30 ]; then CurDir=${DIR:0:12}...${DIR:${#DIR}-15}; else CurDir=$DIR; fi'
PS1='[\h:$CurDir] \$ '

Launch GNOME session from terminal


  • Switch to a second terminal by pressing: ctrl + alt + F2, and provide an current machine login information
  • start a new X-session: 
$xinit -- :1
  • ssh to target machine with -X option
$ssh -X username@targetmachineIP
  • once logged in, start a new gnome-session
$gnome-session

If you want to switch back to your current machine, just press: ctrl + alt +F7

Friday, June 28, 2013

Joystick on Groovy

Get a package from aptitude

sudo apt-get install ros-groovy-joystick-drivers

Follow this tutorial, start from topic "1.2 Configure the Joystick" onward, to configure a permission.

To start using the node, just run

rosrun joy joy_node

When node is running, you should be able to see topic named "/joy". To see data flow, just run

rostopic echo /joy

Tested using Xbox360 joystick for Window, on Ubuntu 12.04 running ROS Groovy.

Wednesday, March 6, 2013

Backup script


To make life a bit easier a backup script is attached here (at the end of this page) to make a full-system backup. The script will do the following:

  • It will empty your trash.
  • make an list of files and folder that to don't want to backup (an exclude_file mentioned as above). Files ended with .bag, .mpg, .mpeg, .avi, .png will be exclude and also everything in /tmp and /download folder.
  • then it will create a destination folder at your argument directory.

Usage of the script

chmod +x fullbackup.sh 

and then (assumed that you want to put a backup file at /home/golfcar)

./fullbackup /home/golfcar  

After backup finish, you will see a folder named like golfcart-master-010313.tgz where "golfcart-master" is your hostname and "010313" is a backup date (01/03/2013).

The script can be download from here

 link

Reference:
https://help.ubuntu.com/community/BackupYourSystem/TAR
https://sites.google.com/site/fmautonomy/private/documentation/backups

Thursday, December 13, 2012

DBSCAN

I was looking for the way to cluster a points, grouping a neighbourhood points together, but since I don't know number clusters in the data and therefore the k-mean clustering can't be use. After do some search on Google and our good friend Wikipedia I come across this alternative clustering algorithm.

DBSCAN is short from Density-Based Spatial Clustering of Application with Noise (reference from wiki : DBSCAN)

Explanation in plain english
DBSCAN requires two parameters: \varepsilon (eps) and the minimum number of points required to form a cluster (minPts). It starts with an arbitrary starting point that has not been visited. This point's \varepsilon-neighborhood is retrieved, and if it contains sufficiently many points, a cluster is started. Otherwise, the point is labeled as noise. Note that this point might later be found in a sufficiently sized \varepsilon-environment of a different point and hence be made part of a cluster.
If a point is found to be a dense part of a cluster, its \varepsilon-neighborhood is also part of that cluster. Hence, all points that are found within the \varepsilon-neighborhood are added, as is their own \varepsilon-neighborhood when they are also dense. This process continues until the density-connected cluster is completely found. Then, a new unvisited point is retrieved and processed, leading to the discovery of a further cluster or noise.

Here is a code in Python
 #! /usr/bin/python  
 from math import sqrt, pow  
   
 class DBSCAN:  
 #Density-Based Spatial Clustering of Application with Noise -> http://en.wikipedia.org/wiki/DBSCAN  
   def __init__(self):  
     self.name = 'DBSCAN'  
     self.DB = [] #Database  
     self.esp = 4 #neighborhood distance for search  
     self.MinPts = 2 #minimum number of points required to form a cluster  
     self.cluster_inx = -1  
     self.cluster = []  
       
   def DBSCAN(self):  
     for i in range(len(self.DB)):  
       p_tmp = self.DB[i]  
       if (not p_tmp.visited):  
         #for each unvisited point P in dataset  
         p_tmp.visited = True  
         NeighborPts = self.regionQuery(p_tmp)  
         if(len(NeighborPts) < self.MinPts):  
           #that point is a noise  
           p_tmp.isnoise = True  
           print p_tmp.show(), 'is a noise'  
         else:  
           self.cluster.append([])  
           self.cluster_inx = self.cluster_inx + 1  
           self.expandCluster(p_tmp, NeighborPts)     
       
   def expandCluster(self, P, neighbor_points):  
     self.cluster[self.cluster_inx].append(P)  
     iterator = iter(neighbor_points)  
     while True:  
       try:   
         npoint_tmp = iterator.next()  
       except StopIteration:  
         # StopIteration exception is raised after last element  
         break  
       if (not npoint_tmp.visited):  
         #for each point P' in NeighborPts   
         npoint_tmp.visited = True  
         NeighborPts_ = self.regionQuery(npoint_tmp)  
         if (len(NeighborPts_) >= self.MinPts):  
           for j in range(len(NeighborPts_)):  
             neighbor_points.append(NeighborPts_[j])  
       if (not self.checkMembership(npoint_tmp)):  
         #if P' is not yet member of any cluster  
         self.cluster[self.cluster_inx].append(npoint_tmp)  
       else:  
         print npoint_tmp.show(), 'is belonged to some cluster'  
   
   def checkMembership(self, P):  
     #will return True if point is belonged to some cluster  
     ismember = False  
     for i in range(len(self.cluster)):  
       for j in range(len(self.cluster[i])):  
         if (P.x == self.cluster[i][j].x and P.y == self.cluster[i][j].y):  
           ismember = True  
     return ismember  
       
   def regionQuery(self, P):  
   #return all points within P's eps-neighborhood, except itself  
     pointInRegion = []  
     for i in range(len(self.DB)):  
       p_tmp = self.DB[i]  
       if (self.dist(P, p_tmp) < self.esp and P.x != p_tmp.x and P.y != p_tmp.y):  
         pointInRegion.append(p_tmp)  
     return pointInRegion  
   
   def dist(self, p1, p2):  
   #return distance between two point  
     dx = (p1.x - p2.x)  
     dy = (p1.y - p2.y)  
     return sqrt(pow(dx,2) + pow(dy,2))  
   
 class Point:  
   def __init__(self, x = 0, y = 0, visited = False, isnoise = False):  
     self.x = x  
     self.y = y  
     self.visited = False  
     self.isnoise = False  
   
   def show(self):  
     return self.x, self.y  
       
 if __name__=='__main__':  
   #this is a mocking data just for test  
   vecPoint = [Point(11,3), Point(10,4), Point(11,5), Point(12,4), Point(13,5), Point(12,6), Point(6,10), Point(8,10), Point(5,12), Point(7,12)]  
   
   #Create object  
   dbScan = DBSCAN()  
   #Load data into object  
   dbScan.DB = vecPoint;  
   #Do clustering  
   dbScan.DBSCAN()  
   #Show result cluster  
   for i in range(len(dbScan.cluster)):  
     print 'Cluster: ', i  
     for j in range(len(dbScan.cluster[i])):  
       print dbScan.cluster[i][j].show()  


Sunday, November 25, 2012

tele-operate the Pioneer

I make some write-up about tele-operation code I have found somewhere I can't remember. May come handy later I guess.

https://sites.google.com/site/poonweb/robotics/tele-operation

I don't know how to put a code nicely on blogger, so I put it at my (long untouched) Google site.

Nice ROS installation guide

I have come across this site showing guide on ROS installation made easy, which really made it easy with step-by-step to install ROS. Should be very useful for anyone who looking for a "sure way" to install ROS on Ubuntu.

There site also have many interesting articles as well!

Tuesday, October 2, 2012

NASA Select Advanced Robotics Projects for Development



NASA āđ„āļ”้āđ€āļĨืāļ­āļ 8 āđ‚āļ›āļĢāđ€āļˆāļāļ•์āļ—ี่āđ€āļี่āļĒāļ§āļ‚้āļ­āļ‡āļัāļšāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļŦุ่āļ™āļĒāļ™āļ•์āđ€āļžื่āļ­āļ—ี่āļˆāļ°āļ™āļģāđ„āļ›āđƒāļŠ้āđƒāļ™āļ āļēāļĢāļิāļˆāļāļēāļĢāļŠāļģāļĢāļ§āļˆāļ­āļ§āļāļēāļĻāđƒāļ™āļ­āļ™āļēāļ„āļ•  āđ‚āļ›āļĢāđ€āļˆāļāļ•์āļ—ี่āđ„āļ”้āļĢัāļšāļāļēāļĢāļ„ัāļ”āđ€āļĨืāļ­āļāļĄāļēāļĄีāļ•ั้āļ‡āđāļ•่āđ‚āļ›āļĢāđ€āļˆāļāļ•์āļ—ี่āļˆāļ°āļžัāļ’āļ™āļēāļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļ‚āļ­āļ‡āļŦุ่āļ™āļĒāļ™āļ•์āļŠāļģāļĢāļ§āļˆ (robotic planetary rovers) āđ„āļ›āļˆāļ™āļ–ึāļ‡āļŦุ่āļ™āļĒāļ™āļ•์āđ€āļŠāļĄืāļ­āļ™āļĄāļ™ุāļĐāļĒ์ (humanoid robotics systems)
āļ•ัāļ§āļ­āļĒ่āļēāļ‡āļŦāļ™ึ่āļ‡āļ‚āļ­āļ‡āļŦุ่āļ™āļĒāļ™āļ•์āļ—ี่āļ—āļģāļ‡āļēāļ™āđ€āļ„ีāļĒāļ‡āļ‚้āļēāļ‡āđāļĨāļ°āļ„āļ­āļĒāļŠ่āļ§āļĒāđ€āļŦāļĨืāļ­āļĄāļ™ุāļĐāļĒ์āđƒāļ™āļ­āļ§āļāļēāļĻāļ็āļ„ืāļ­ Robonaut āļŦุ่āļ™āļĒāļ™āļ•์āļ„āļĨ้āļēāļĒāļĄāļ™ุāļĐāļĒ์āļ—ี่āļĄีāļĢ่āļēāļ‡āļāļēāļĒāđāļ„่āļŠ่āļ§āļ™āļšāļ™āļ‚āļ­āļ‡ NASA āđ€āļ›็āļ™āļŦุ่āļ™āļĒāļ™āļ•์āļ‹ึ่āļ‡āļ™ัāļšāđ€āļ›็āļ™āļŦāļ™ึ่āļ‡āđƒāļ™āļŠāļĄāļēāļŠิāļāļšāļ™āļŠāļ–āļēāļ™ีāļ­āļ§āļāļēāļĻāļ™āļēāļ™āļēāļŠāļēāļ•ิāļ—ี่āđ„āļ”้āļĢัāļšāļāļēāļĢāļ—āļ”āļŠāļ­āļšāļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āļˆāļĢิāļ‡ āđāļĨāļ°āđ€āļĢิ่āļĄāļŠ่āļ§āļĒāđ€āļŦāļĨืāļ­āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āļ™ัāļāļšิāļ™āļ­āļ§āļāļēāļĻāđāļĨ้āļ§ āļ—āļģāđƒāļŦ้āļ™ัāļāļšิāļ™āļ­āļ§āļāļēāļĻāļĄีāđ€āļ§āļĨāļēāļ—ี่āļˆāļ°āļ™āļģāđ„āļ›āđƒāļŠ้āļัāļšāļ‡āļēāļ™āđƒāļ™āļŦ้āļ­āļ‡āļ—āļ”āļĨāļ­āļ‡āļ‹ึ่āļ‡āļĄีāļ„āļ§āļēāļĄāļ‹ัāļšāļ‹้āļ­āļ™āđāļĨāļ°āļŠāļģāļ„ัāļāļāļ§่āļēāļ™āļēāļ™āļ‚ึ้āļ™ 
āļˆุāļ”āļĄุ่āļ‡āļŦāļĄāļēāļĒāļ‚āļ­āļ‡ NASA āļ—ี่āļ•้āļ­āļ‡āļāļēāļĢāļžัāļ’āļ™āļēāļ‚ีāļ”āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļ‚āļ­āļ‡āļŦุ่āļ™āļĒāļ™āļ•์āļ™ั้āļ™āļ็āđ€āļžื่āļ­āļ•้āļ­āļ‡āļāļēāļĢāđƒāļŦ้āļŦุ่āļ™āļĒāļ™āļ•์āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āđ€āļ„ีāļĒāļ‡āļ‚้āļēāļ‡āļัāļšāļĄāļ™ุāļĐāļĒ์āļ—ั้āļ‡āļšāļ™āđ‚āļĨāļāđāļĨāļ°āđƒāļ™āļ­āļ§āļāļēāļĻ āļ‹ึ่āļ‡āļˆāļ°āļ—āļģāđƒāļŦ้āļĄāļ™ุāļĐāļĒ์āļ—āļģāļ‡āļēāļ™āđ„āļ”้āļ­āļĒ่āļēāļ‡āļĄีāļ›āļĢāļ°āļŠิāļ—āļ˜ิāļ āļēāļžāļŠูāļ‡āļŠุāļ” āļĨāļ”āļ‚้āļ­āļˆāļģāļัāļ”āļ”้āļēāļ™āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļ‚āļ­āļ‡āļĄāļ™ุāļĐāļĒ์ āđāļĨāļ°āļ›āļĢัāļšāļ›āļĢุāļ‡āđ€āļĢื่āļ­āļ‡āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ ัāļĒāđƒāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđƒāļŦ้āļĄāļēāļāļ‚ึ้āļ™
āļĢāļēāļĒāļŠื่āļ­ 8 āđ‚āļ›āļĢāđ€āļˆāļāļ•์āļ—ี่āđ„āļ”้āļĢัāļšāļāļēāļĢāļŠāļ™ัāļšāļŠāļ™ุāļ™āđ‚āļ”āļĒ NASA āļĄีāļ”ัāļ‡āļ•่āļ­āđ„āļ›āļ™ี้

  • āļŦุ่āļ™āļĒāļ™āļ•์āļ­āļ§āļ•āļēāļĢ (āļŦุ่āļ™āļĒāļ™āļ•์āļ—ี่āđ€āļ„āļĨื่āļ­āļ™āđ„āļŦāļ§āļ•āļēāļĄāļĄāļ™ุāļĐāļĒ์āļœู้āļ„āļ§āļšāļ„ุāļĄāļĢāļ°āļĒāļ°āđ„āļāļĨ),  ”Toward Human Avatar Robots for Co-Exploration of Hazardous Environments,” J. Pratt, principal investigator, Florida Institute of Human Machine Cognition, Pensacola
  • āļĢāļ°āļšāļšāļ‚āļēāđ€āļ—ีāļĒāļĄ,  ”A Novel Powered Leg Prosthesis Simulator for Sensing and Control Development,” H. Herr, principal investigator, Massachusetts Institute of Technology, Cambridge 
  • āļĢāļ°āļšāļšāļ—āļģāļ™āļēāļĒāļĨัāļāļĐāļ“āļ°āļžื้āļ™āļœิāļ§āļ—ี่āļĄีāļ„āļ§āļēāļĄāļ­ัāļ™āļ•āļĢāļēāļĒāļ•่āļ­āļŦุ่āļ™āļĒāļ™āļ•์āļŠāļģāļĢāļ§āļˆ, “Long-range Prediction of Non-Geometric Terrain Hazards for Reliable Planetary Rover Traverse,” R. Whittaker, principal investigator, Carnegie Mellon University, Pittsburgh 
  • āļœิāļ§āļˆāļģāļĨāļ­āļ‡āļ—ี่āļĄีāļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļĢัāļšāļĢู้āļŠāļģāļŦāļĢัāļšāļŦุ่āļ™āļĒāļ™āļ•์,  ”Active Skins for Simplified Tactile Feedback in Robotics,” S. Bergbreiter, principal investigator, University of Maryland, College Park 
  • āļĢāļ°āļšāļšāļŠ่āļ‡āļāļģāļĨัāļ‡āļŠāļģāļŦāļĢัāļšāļŦุ่āļ™āļĒāļ™āļ•์āđ€āļŠāļĄืāļ­āļ™āļĄāļ™ุāļĐāļĒ์, “Actuators for Safe, Strong and Efficient Humanoid Robots,” S. Pekarek, principal investigator, Purdue University
  • āļĢāļ°āļšāļšāļ„āļ§āļšāļ„ุāļĄāļŦุ่āļ™āļĒāļ™āļ•์āļĢāļ°āļĒāļ°āđ„āļāļĨ,  ”Whole-body Telemanipulation of the Dreamer Humanoid Robot on Rough Terrains Using Hand Exoskeleton (EXODREAM),” L. Sentis, principal investigator, University of Texas at Austin 
  • āļŦุ่āļ™āļĒāļ™āļ•์āđāļšāļšāļšāļēāļ‡ āđ† āļĒāļēāļ§ āđ†, ”Long, Thin Continuum Robots for Space Applications,” I. Walker, principal investigator, Clemson University, Clemson, S.C. 
  • āļĢāļ°āļšāļšāļ„āļ§āļšāļ„ุāļĄāļŠāļģāļŦāļĢัāļšāļŦāļĒิāļšāļˆัāļšāļ§ัāļ•āļ–ุāļ­่āļ­āļ™āļ™ิ่āļĄ,  ”Manipulating Flexible Materials Using Sparse Coding,” R. Platt, principal investigator, State University of New York, Buffalo 
NASA āļĄีāļ›āļĢāļ°āļ§ัāļ•ิāļ­ัāļ™āļĒāļēāļ§āļ™āļēāļ™āđƒāļ™āļāļēāļĢāļžัāļ’āļ™āļēāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļĨ้āļģāļŠāļĄัāļĒāļŠāļģāļŦāļĢัāļšāļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āđƒāļ™āļ­āļ§āļāļēāļĻ āļ™āļ­āļāļˆāļēāļāļ™ี้ NASA āļĒัāļ‡āđ„āļ”้āļĢ่āļ§āļĄāļĄืāļ­āļัāļšāļ āļēāļ„āđ€āļ­āļāļŠāļ™āļ āļēāļĒāđƒāļ™āļŠāļŦāļĢัāļāļŊ āļĄāļŦāļēāļ§ิāļ—āļĒāļēāļĨัāļĒ āđāļĨāļ°āļ āļēāļ„āļĢัāļāļŊ āđƒāļ™āļāļēāļĢāļ–่āļēāļĒāļ—āļ­āļ”āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāđ€āļŦāļĨ่āļēāļ™ี้āļāļĨัāļšāļŠู่āļ āļēāļ„āļ­ุāļ•āļŠāļēāļŦāļāļĢāļĢāļĄāļ‚āļ­āļ‡āļŠāļŦāļĢัāļāļŊ āđ€āļžื่āļ­āđ€āļžิ่āļĄāļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļ”้āļēāļ™āļāļēāļĢāļœāļĨิāļ• āđāļĨāļ°āļāļēāļĢāđāļ‚่āļ‡āļ‚ัāļ™āļ”้āļēāļ™āđ€āļĻāļĢāļĐāļāļิāļˆāļ­ีāļāļ”้āļ§āļĒ
āļˆāļēāļāļ‚่āļēāļ§āļ™ี้āđ€āļĢāļēāļˆāļ°āđ€āļŦ็āļ™āđ„āļ”้āļ§่āļē NASA āđ„āļ”้āđ€āļ™้āļ™āļ„āļ§āļēāļĄāļŠāļģāļ„ัāļāđ„āļ›āļ—ี่āļāļēāļĢāļĢัāļšāļĢู้āđāļĨāļ°āļāļēāļĢāļ„āļ§āļšāļ„ุāļĄāļĢāļ°āļĒāļ°āđ„āļāļĨāļ™ั่āļ™āđ€āļ­āļ‡

āļ­้āļēāļ‡āļ­ิāļ‡

NASA


Wednesday, September 19, 2012

Set maximum screen size, Ubuntu 12.04

I just setup my work station at my new workplace and found out that my Ubuntu 12.04 with ATI graphic card cannot output dual screen (two 1600x900) with message indicate that it exceed maximum screen size (1600x1600). After doing some search I found a fix.

I have to configure file xorg.conf in ~/etc/X11/ folder by adding subsection "display" part is section "screen" as follow (character in green):

[~/etc/X11/xorg.conf] 
Section "Screen"
Identifier "Default Screen"
DefaultDepth 24
    SubSection "Display"
        Virtual 3600 3600
    EndSubSection

EndSection
Section "Module"
Load "glx"
EndSection
Above code will change maximum size to 3600x3600 larger than what I really want (but it's fine). Save and reboot the system and I can use dual-monitor as I want.




Monday, July 9, 2012

Curiosity's 7 Minute Of Terror



āļŦāļĨัāļ‡āļˆāļēāļāđ€āļ”ิāļ™āļ—āļēāļ‡āļĄุ่āļ‡āļŦāļ™้āļēāđ„āļ›āļĒัāļ‡āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāļĄāļēāđāļĨ้āļ§āļ–ึāļ‡ 7 āđ€āļ”ืāļ­āļ™ āļ•āļ­āļ™āļ™ี้āļ็āđ€āļŦāļĨืāļ­āđ€āļ§āļĨāļēāļ­ีāļāđ€āļžีāļĒāļ‡āđ„āļĄ่āļ–ึāļ‡āđ€āļ”ืāļ­āļ™āļ—ี่āļŦุ่āļ™āļĒāļ™āļ•์āļŠāļģāļĢāļ§āļˆāļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢ Curiosity āļ—ี่āđ€āļ”ิāļ™āļ—āļēāļ‡āđ„āļ›āļัāļšāļˆāļĢāļ§āļ” Atlas V āļˆāļ°āđ€āļ”ิāļ™āļ—āļēāļ‡āļ–ึāļ‡ Gale Crater āļˆุāļ”āļŦāļĄāļēāļĒāļ‚āļ­āļ‡āļĄัāļ™ āđāļĨāļ°āđ€āļĢิ่āļĄāļ—āļģāļāļēāļĢāļŠāļģāļĢāļ§āļˆ āļ‹ึ่āļ‡āļĄีāļ§ัāļ•āļ–ุāļ›āļĢāļ°āļŠāļ‡āļ„์āļ—ี่āļ•้āļ­āļ‡āļāļēāļĢāļĻึāļāļĐāļēāļ§่āļēāļŠāļ āļēāļžāđāļ§āļ”āļĨ้āļ­āļĄāļšāļ™āļ­ัāļ‡āļ„āļēāļĢāļ—ั้āļ‡āđƒāļ™āļ­āļ”ีāļ• āđāļĨāļ°āļ›ัāļˆāļˆุāļšัāļ™ āļŠāļēāļĄāļēāļĢāļ–āđ€āļื้āļ­āļŦāļ™ุāļ™āđƒāļŦ้āļĄีāļŠิ่āļ‡āļĄีāļŠีāļ§ิāļ•āļšāļ™āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāļŦāļĢืāļ­āđ„āļĄ่ āđāļ•่āļ­āļĒ่āļēāļ‡āđ„āļĢāļ็āļ•āļēāļĄāļŠ่āļ§āļ‡āđ€āļ§āļĨāļēāļ—ี่āļ­ัāļ™āļ•āļĢāļēāļĒāļ—ี่āļŠุāļ”āļ‚āļ­āļ‡āļ āļēāļĢāļิāļˆāļ™ี้āļˆāļ°āđ€āļĢิ่āļĄāļ‚ึ้āļ™āđƒāļ™āļŠ่āļ§āļ‡āđ€āļ§āļĨāļē 7 āļ™āļēāļ—ีāļ่āļ­āļ™āļ—ี่āđ€āļˆ้āļē Curiosity āļˆāļ°āļĨāļ‡āļŠัāļĄāļœัāļŠāļžื้āļ™āļ•่āļēāļ‡āļŦāļēāļ!
āļ–ึāļ‡āđāļĄ้āļ§่āļē Curiosity āļˆāļ°āđ„āļ”้āļĢัāļšāļāļēāļĢāļ­āļ­āļāđāļšāļš āđāļĨāļ°āļ—āļ”āļŠāļ­āļšāđ€āļ›็āļ™āļ­āļĒ่āļēāļ‡āļ”ีāđ‚āļ”āļĒāļāļĨุ่āļĄāļ§ิāļĻāļ§āļāļĢāļˆāļēāļ NASA āļ‹ึ่āļ‡āļĢ่āļ§āļĄāļĄืāļ­āļัāļšāļšāļĢิāļĐัāļ— Boeing āđāļĨāļ° Lockheed Martin āđƒāļ™āļāļēāļĢāļžัāļ’āļ™āļē āļ­ีāļāļ—ั้āļ‡āļĄีāļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“์āļˆāļēāļāļāļēāļĢāļŠ่āļ‡āļŦุ่āļ™āļĒāļ™āļ•์āļŠāļģāļĢāļ§āļˆāļ­āļ§āļāļēāļĻāļ„ู่āđāļāļ” Spirit āđāļĨāļ° Opportunity āļĄāļēāđāļĨ้āļ§ āļ‚ั้āļ™āļ•āļ­āļ™āļāļēāļĢāļĨāļ‡āļˆāļ­āļ”āļ‚āļ­āļ‡ Curiosity āļ็āļĒัāļ‡āļ–ืāļ­āļ§่āļēāđ€āļ›็āļ™āļ­āļ°āđ„āļĢāļ—ี่ "āļŠุāļ”āđ‚āļ•่āļ‡" āļĄāļēāļ āđ† āđ€āļĨāļĒāļ—ีāđ€āļ”ีāļĒāļ§
āļāļēāļĢāļŠ่āļ‡āļŦุ่āļ™āļĒāļ™āļ•์āļ‚āļ™āļēāļ”āđƒāļŦāļ่āļ­āļĒ่āļēāļ‡ Curiosity āļ‹ึ่āļ‡āļĄีāļ‚āļ™āļēāļ”āđƒāļŦāļ่āļžāļ­ āđ† āļัāļšāļĢāļ– mini Cooper āļŦāļ™ึ่āļ‡āļ„ัāļ™ āļĄีāļ™้āļģāļŦāļ™ัāļāļĄāļēāļāļāļ§่āļēāđ€āļˆ้āļē Spirit āđāļĨāļ° Opportunity āļ–ึāļ‡ 5 āđ€āļ—่āļē āļĒ่āļ­āļĄāđ€āļ›็āļ™āļ­āļ°āđ„āļĢāļ—ี่āđ„āļĄ่āļ˜āļĢāļĢāļĄāļ”āļēāđāļ™่āļ™āļ­āļ™ āļ™āļēāļĒ Bobby Braun āļ­āļ”ีāļ• Chief Technologist āļ‚āļ­āļ‡ NASA āđ„āļ”้āļāļĨ่āļēāļ§āđ€āļ­āļēāđ„āļ§้āđƒāļ™āđ€āļ­āļāļŠāļēāļĢāļ—āļēāļ‡āļ§ิāļŠāļēāļāļēāļĢāđƒāļ™āļŦัāļ§āļ‚้āļ­āļŠื่āļ­ Mars Exploration Entry, Descent, and Landing Challenges āļ§่āļē āļ”้āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļ—ี่āļĄีāļ­āļĒู่āđƒāļ™āļ›ัāļˆāļˆุāļšัāļ™ āđ€āļĢāļēāđ„āļĄ่āļŠāļēāļĄāļēāļĢāļ–āļŠ่āļ‡āļ­āļ°āđ„āļĢāļ—ี่āļĄีāļ‚āļ™āļēāļ”āđƒāļŦāļ่ āļŦāļĢืāļ­āļ™้āļģāļŦāļ™ัāļāļ—ี่āļĄāļēāļāđ„āļ›āļāļ§่āļēāļ™ี้āđ„āļ”้āļ­ีāļāđāļĨ้āļ§ āļĢāļ§āļĄāļ–ึāļ‡āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ—ี่āļˆāļ°āļŠ่āļ‡āļĄāļ™ุāļĐāļĒ์āđ„āļ›āđ€āļŦāļĒีāļĒāļšāļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāļ‹ึ่āļ‡āļ•้āļ­āļ‡āļšāļĢāļĢāļ—ุāļāļŠัāļĄāļ āļēāļĢāļ°āđ„āļ›āļ”้āļ§āļĒāđ€āļĒāļ­āļ°āļāļ§่āļēāļ™ี้āļĄāļēāļ āļ”ัāļ‡āļ™ั้āļ™āļ āļēāļĢāļิāļˆāđƒāļ™āļ„āļĢั้āļ‡āļ™ี้āļ็āļ–ืāļ­āđ€āļ›็āļ™āļˆุāļ” "āļŠุāļ”āļ‚ีāļ”" āļ‚āļ­āļ‡āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļŠāļģāļĢāļ§āļˆāļ­āļ§āļāļēāļĻāđƒāļ™āļ‚āļ“āļ°āļ™ี้āđāļĨ้āļ§āļ”้āļ§āļĒāļ™ั่āļ™āđ€āļ­āļ‡! āļ„āļ§āļēāļĄāļĒāļēāļāļĨāļģāļšāļēāļāđāļ—āļšāļ—ั้āļ‡āļŦāļĄāļ”āļ‚āļ­āļ‡āļ āļēāļĢāļิāļˆāļ™ี้āđ€āļ›็āļ™āļœāļĨāļˆāļēāļāļāļēāļĢāļ—ี่āļŠั้āļ™āļšāļĢāļĢāļĒāļēāļāļēāļĻāļ‚āļ­āļ‡āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāļ—ี่āļ™้āļ­āļĒāļāļ§่āļēāđ‚āļĨāļāļ–ึāļ‡ 100 āđ€āļ—่āļē āļ—āļģāđƒāļŦ้āļāļēāļĢāļĨāļ”āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āđ€āļžื่āļ­āđ€āļ‚้āļēāļŠู่āļžื้āļ™āļœิāļ§āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāđ€āļ›็āļ™āđ„āļ›āđ„āļ”้āļĒāļēāļāļĄāļēāļ
āļ”้āļ§āļĒāļ„āļ§āļēāļĄāļ—ี่āļŠัāļāļāļēāļ“āļ§ิāļ—āļĒุāļ—ี่āļŠ่āļ‡āļˆāļēāļāļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāļ•้āļ­āļ‡āđƒāļŠ้āđ€āļ§āļĨāļēāļ–ึāļ‡ 14 āļ™āļēāļ—ีāļāļ§่āļēāļˆāļ°āđ€āļ”ิāļ™āļ—āļēāļ‡āļĄāļēāļ–ึāļ‡āđ‚āļĨāļ āđƒāļ™āļ‚āļ“āļ°āļ—ี่āļ‚ั้āļ™āļ•āļ­āļ™āļāļēāļĢāļĨāļ‡āļˆāļ­āļ”āļ—ั้āļ‡āļŦāļĄāļ” āļŦāļĢืāļ­āļ—ี่āđ€āļĢีāļĒāļāļ§่āļē EDL (Enter, Descent, Landing) āđƒāļŠ้āđ€āļ§āļĨāļēāđ€āļžีāļĒāļ‡ 7 āļ™āļēāļ—ีāđ€āļ—่āļēāļ™ั้āļ™ āļ‹ึ่āļ‡āđ€āļ—่āļēāļัāļšāļ§่āļē  NASA āļˆāļ°āđ„āļĄ่āļŠāļēāļĄāļēāļĢāļ–āļŠื่āļ­āļŠāļēāļĢāļัāļš Curiosity āđƒāļ™āļ‚āļ“āļ°āļ—ี่āļ­āļĒู่āđƒāļ™āļ‚ั้āļ™āļ•āļ­āļ™ EDL āđ„āļ”้āđ€āļĨāļĒ āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ—ั้āļ‡āļŦāļĄāļ”āļˆāļ°āļ•้āļ­āļ‡āļ—āļģāļ”้āļ§āļĒāļĢāļ°āļšāļšāļ­ัāļ•āđ‚āļ™āļĄัāļ•ิ āđāļĨāļ°āļ‚้āļ­āļœิāļ”āļžāļĨāļēāļ”āđ€āļžีāļĒāļ‡āđ€āļĨ็āļāļ™้āļ­āļĒāļ—ี่āđ€āļิāļ”āļ‚ึ้āļ™āđƒāļ™āļŠ่āļ§āļ‡āđ€āļ§āļĨāļēāļ”ัāļ‡āļāļĨ่āļēāļ§āļˆāļ°āļŠāļĢ้āļēāļ‡āļœāļĨāļāļĢāļ°āļ—āļšāļ­āļĒ่āļēāļ‡āļĢุāļ™āđāļĢāļ‡āļ•่āļ­āļ āļēāļĢāļิāļˆ  āļĢāļēāļĒāļĨāļ°āđ€āļ­ีāļĒāļ”āļ‚ั้āļ™āļ•āļ­āļ™āļāļēāļĢāļĨāļ‡āļˆāļ­āļ”āļˆāļ°āļ­āļ˜ิāļšāļēāļĒāđ‚āļ”āļĒāļĨāļ°āđ€āļ­ีāļĒāļ” āđāļš่āļ‡āđ€āļ›็āļ™ 4 āļŠ่āļ§āļ™āļŦāļĨัāļ āđ† āļ”ัāļ‡āļ•่āļ­āđ„āļ›āļ™ี้āļ„āļĢัāļš

āļ‚ั้āļ™āļ—ี่ 1 : āļāļēāļĢāđ€āļ‚้āļēāļŠู่āļ§āļ‡āđ‚āļ„āļˆāļĢ
āđƒāļ™āļ‚ั้āļ™āļ•āļ­āļ™āļāļēāļĢāļĨāļ‡āļˆāļ­āļ” Curiosity āļˆāļ°āļšāļĢāļĢāļˆุāļ­āļĒู่āđƒāļ™ aeroshell āđ€āļāļĢāļēāļ°āļัāļ™āļ„āļ§āļēāļĄāļĢ้āļ­āļ™āļ—ี่āđ€āļิāļ”āļˆāļēāļāļāļēāļĢāđ€āļŠีāļĒāļ”āļŠีāļัāļšāļŠั้āļ™āļšāļĢāļĢāļĒāļēāļāļēāļĻāļ‚āļ­āļ‡āļ”āļēāļ‡āļ­ัāļ‡āļ„āļēāļĢāļ—ี่āļ„āļ§āļēāļĄāđ€āļĢ็āļ§ 5.3 - 6 āļิāđ‚āļĨāđ€āļĄāļ•āļĢāļ•่āļ­āļ§ิāļ™āļēāļ—ี āļŦāļĢืāļ­āļ›āļĢāļ°āļĄāļēāļ“ 19,080 - 21,600 āļิāđ‚āļĨāđ€āļĄāļ•āļĢāļ•่āļ­āļŠั่āļ§āđ‚āļĄāļ‡ āļ—āļģāđƒāļŦ้āđ€āļิāļ”āļ„āļ§āļēāļĄāļĢ้āļ­āļ™āļŠูāļ‡āļ–ึāļ‡ 871 āļ­āļ‡āļĻāļēāđ€āļ‹āļŠāđ€āļ‹ีāļĒāļŠ āļ—ี่āļœิāļ§āļ āļēāļĒāļ™āļ­āļ āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒี aeroshell āļ™ี้āļ–ืāļ­āļ§่āļēāđ€āļ›็āļ™āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļ—ี่āđƒāļŠ้āļัāļ™āļĄāļēāļ•ั้āļ‡āđāļ•่ NASA āļŠ่āļ‡āļŦุ่āļ™āļĒāļ™āļ•์āļŠāļģāļĢāļ§āļˆāļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāļ•ัāļ§āđāļĢāļ Viking  (āļĢูāļ›āļ—ี่ 10 āļˆāļēāļāđ€āļ­āļāļŠāļēāļĢāļ—āļēāļ‡āļ§ิāļŠāļēāļāļēāļĢ āļ‚āļ­āļ‡āļ™āļēāļĒ Bobby Braun) āđ‚āļ”āļĒ aeroshell āļ—ี่āđƒāļŠ้āđƒāļ™āļ āļēāļĢāļิāļˆāļ™ี้āļĄีāļ‚āļ™āļēāļ”āđƒāļŦāļ่āļ—ี่āļŠุāļ”āđ€āļ—่āļēāļ—ี่āđ€āļ„āļĒāļŠāļĢ้āļēāļ‡āļĄāļēāđ€āļŠ่āļ™āļัāļ™  āļāļēāļĢāđāļ้āđ„āļ‚āđ€āļŠ้āļ™āļ—āļēāļ‡āļāļēāļĢāļĨāļ‡āļˆāļ­āļ”āļ—ี่āļœิāļ”āļžāļĨāļēāļ”āđ„āļ›āđ€āļ™ื่āļ­āļ‡āļˆāļēāļāļāļēāļĢāđ€āļŠีāļĒāļ”āļŠีāļัāļšāļŠั้āļ™āļšāļĢāļĢāļĒāļēāļāļēāļĻāļ­āļĒ่āļēāļ‡āļĢุāļ™āđāļĢāļ‡āđƒāļ™āļ‚ั้āļ™āļ•āļ­āļ™āļ™ี้ āļˆāļ°āđƒāļŠ้āđ„āļ­āļž่āļ™āļ‚āļ™āļēāļ”āđ€āļĨ็āļ (reaction control system) āļˆāļģāļ™āļ§āļ™āļŠี่āļ•ัāļ§āļ—ี่āļ•ิāļ”āļ­āļĒู่āļĢāļ­āļš aeroshell āđƒāļ™āļāļēāļĢāđ€āļ›āļĨี่āļĒāļ™āļ—ิāļĻāļ—āļēāļ‡āļ‚āļ­āļ‡āđāļĢāļ‡āļĒāļāļ—ี่āđ€āļิāļ”āļˆāļēāļ aeroshell āđ€āļ­āļ‡ āđƒāļŦ้āđ„āļ›āđƒāļ™āļ•āļģāđāļŦāļ™่āļ‡āļĨāļ‡āļˆāļ­āļ”āļ•āļēāļĄāļ•้āļ­āļ‡āļāļēāļĢ

āļŦāļĨัāļ‡āļˆāļēāļāļ‚ั้āļ™āļ•āļ­āļ™āļ™ี้ āļŠิ้āļ™āļŠ่āļ§āļ™āļ—ี่āđ€āļ›็āļ™āļ‰āļ™āļ§āļ™āļัāļ™āļ„āļ§āļēāļĄāļĢ้āļ­āļ™āļ”้āļēāļ™āļŦāļ™้āļēāļ—ี่āļ­āļĒู่āļ”้āļēāļ™āļŦāļ™้āļēāļ‚āļ­āļ‡ aeroshell āļˆāļ°āļ–ูāļāļ›āļĨāļ”āļ­āļ­āļ āđāļĨāļ°āļĄีāļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļĨāļ”āļĨāļ‡āđ€āļŦāļĨืāļ­āđ€āļžีāļĒāļ‡āļŠāļ­āļ‡āđ€āļ—่āļēāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āđ€āļŠีāļĒāļ‡ āļŦāļĢืāļ­āļ›āļĢāļ°āļĄāļēāļ“ 680 āļิāđ‚āļĨāđ€āļĄāļ•āļĢāļ•่āļ­āļŠั่āļ§āđ‚āļĄāļ‡ āđāļĨāļ°āļ­āļĒู่āļŠูāļ‡āļˆāļēāļāļžื้āļ™āļœิāļ§āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢ 10 āļิāđ‚āļĨāđ€āļĄāļ•āļĢ

āļ‚ั้āļ™āļ—ี่ 2 : āļ›āļĨ่āļ­āļĒāļĢ่āļĄāļŠูāļŠีāļžāļ­ีāļāļ„āļĢั้āļ‡āļŦāļ™ึ่āļ‡āļ—ี่āļ‚āļ™āļēāļ” āđāļĨāļ°āļ™้āļģāļŦāļ™ัāļāļ‚āļ­āļ‡ Curiosity āđ„āļ”้āđ€āļ‚้āļēāļĄāļēāļ—āļģāđƒāļŦ้āļāļēāļĢāļ›āļĨ่āļ­āļĒāļĢ่āļĄāļŠูāļŠีāļžāđ€āļžื่āļ­āļŠāļ°āļĨāļ­āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļĨāļ‡āđ„āļ›āļ­ีāļāļĄีāļ„āļ§āļēāļĄāļĒุ่āļ‡āļĒāļēāļāļĄāļēāļāļ‚ึ้āļ™  āđƒāļ™āļ āļēāļĢāļิāļˆāļ—ี่āļœ่āļēāļ™āļĄāļēāļ™้āļģāļŦāļ™ัāļāļ‚āļ­āļ‡āļŦุ่āļ™āļĒāļ™āļ•์ (Viking, Spirit, Opportunity) āļĄีāļ™้āļģāļŦāļ™ัāļāļ™้āļ­āļĒāļāļ§่āļēāļĄāļēāļ āļ—āļģāđƒāļŦ้āļĢ่āļĄāļŠูāļŠีāļžāļŠ่āļ§āļĒāļĨāļ”āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļ่āļ­āļ™āļ—ี่āļˆāļ°āļĨāļ‡āļŠู่āļžื้āļ™āļœิāļ§āđ„āļ”้  āđāļ•่āļŠāļģāļŦāļĢัāļš Curiosity āļ—ี่āļĄีāļ™้āļģāļŦāļ™ัāļāļĄāļēāļāļāļ§่āļē Opportunity āļ–ึāļ‡ 5 āđ€āļ—่āļēāļ—āļģāđƒāļŦ้āļĢ่āļĄāļŠูāļŠีāļžāļ—ี่āđƒāļŠ้āļ•้āļ­āļ‡āļĄีāļ‚āļ™āļēāļ”āđƒāļŦāļ่āđ€āļ›็āļ™āļžิāđ€āļĻāļĐ āļ–้āļēāļˆāļ°āđƒāļŠ้āļĢ่āļĄāļŠูāļŠีāļžāļ—ี่āđƒāļŠ้āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāđāļšāļšāđ€āļ”ีāļĒāļ§āļัāļ™āļัāļšāļ āļēāļĢāļิāļˆāļ่āļ­āļ™āļŦāļ™้āļēāļ™ี้ āļĢ่āļĄāļŠูāļŠีāļžāļ‚āļ­āļ‡ Curiosity āļ­āļēāļˆāļˆāļ°āļ•้āļ­āļ‡āļĄีāļ‚āļ™āļēāļ”āđƒāļŦāļ่āļ–ึāļ‡ 19.7 āđ€āļĄāļ•āļĢ āļĄāļēāļāļāļ§่āļēāļŠāļ­āļ‡āđ€āļ—่āļēāļ—ี่āđƒāļŠ้āđƒāļ™āļ āļēāļĢāļิāļˆ MER (Mars Exploration Rover, Spirit āđāļĨāļ° Opportunity) āļ—ี่āđƒāļŠ้āļĢ่āļĄāļŠูāļŠีāļžāļ‚āļ™āļēāļ” 8.9 āđ€āļĄāļ•āļĢ  āļ™āļ­āļāļˆāļēāļāļ™ี้āļĢ่āļĄāļŠูāļŠีāļžāđāļšāļšāļ”ัāļ‡āļāļĨ่āļēāļ§āđ„āļ”้āļĢัāļšāļāļēāļĢāļ—āļ”āļŠāļ­āļšāļ–ึāļ‡āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļ—ี่ 1.8 āđ€āļ—่āļēāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āđ€āļŠีāļĒāļ‡āđ€āļ—่āļēāļ™ั้āļ™ (āđƒāļŠ้āļ‡āļēāļ™āļˆāļĢิāļ‡āļ—ี่ 1.2 āđ€āļ—่āļēāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āđ€āļŠีāļĒāļ‡) āļŠāļĢุāļ›āļ็āļ„ืāļ­ āļ”้āļ§āļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāđ€āļ่āļēāļ™ี้ NASA āļˆāļ°āļ•้āļ­āļ‡āđƒāļŠ้āļĢ่āļĄāļŠูāļŠีāļžāļ—ี่āđƒāļŦāļ่āļāļ§่āļēāđ€āļ”ิāļĄāļĄāļēāļ āđāļĨāļ°āđ€āļĢิ่āļĄāļāļēāļĢāļ›āļĨ่āļ­āļĒāļĢ่āļĄāļŠูāļŠีāļžāļ—ี่āļĢāļ°āļ”ัāļšāļ•่āļģāļāļ§่āļēāđ€āļ”ิāļĄ (āđ€āļžāļĢāļēāļ°āļ•้āļ­āļ‡āļ›āļĨ่āļ­āļĒāļ•āļ­āļ™āļ—ี่āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļˆāļēāļāļ‚ั้āļ™āļ•āļ­āļ™āđāļĢāļāļĨāļ”āļĨāļ‡āļ–ึāļ‡ 1.8 āđ€āļ—่āļēāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āđ€āļŠีāļĒāļ‡ āđāļ—āļ™āļ—ี่āļˆāļ°āđ€āļ›็āļ™ 2.0 āđ€āļ—่āļē) āļ‹ึ่āļ‡āļˆāļ°āđ€āļžิ่āļĄāļ„āļ§āļēāļĄāļ‹ัāļšāļ‹้āļ­āļ™ āđāļĨāļ°āļ„āļ§āļēāļĄāđ€āļŠี่āļĒāļ‡āļ‚āļ­āļ‡āļ āļēāļĢāļิāļˆāļĄāļēāļāļ‚ึ้āļ™āđ„āļ›āļ­ีāļ

NASA āļˆึāļ‡āļĢ่āļ§āļĄāļĄืāļ­āļัāļšāļšāļĢิāļĐัāļ— ILC Dover āđ€āļžื่āļ­āļžัāļ’āļ™āļēāļĢ่āļĄāļŠูāļŠีāļžāļ—ี่āđƒāļŠ้āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒี IAD (Inflatable Aerodynamic Decelerator) āļ‹ึ่āļ‡āļ•่āļēāļ‡āļˆāļēāļāļ§ัāļŠāļ”ุāļ‚āļ­āļ‡āļĢ่āļĄāļŠูāļŠีāļžāļ˜āļĢāļĢāļĄāļ”āļēāļ—ี่āđ€āļ›็āļ™āļŸิāļĨ์āļĄāļšāļēāļ‡ āļ—ี่āļ­ุāļ›āļāļĢāļ“์ IAD āļ™ี้āļˆāļ°āđāļ‚็āļ‡āļ•ัāļ§āđ€āļĄื่āļ­āļāļēāļ‡āļ­āļ­āļ āļĄีāļ„āļ§āļēāļĄāļ—āļ™āļ—āļēāļ™āđāļĨāļ°āđāļ‚็āļ‡āđāļĢāļ‡āļžāļ­āļ—ี่āļˆāļ°āļ—āļ™āļ„āļ§āļēāļĄāļĢ้āļ­āļ™āļ‚āļ­āļ‡āļ‚ั้āļ™āļ•āļ­āļ™āļāļēāļĢāļĨāļ‡āļˆāļ­āļ”āđƒāļ™āļŠ่āļ§āļ™āļ™ี้āđ„āļ”้ āđ‚āļ”āļĒāļ­ุāļ›āļāļĢāļ“์āļ—ี่āļ™āļģāļĄāļēāđƒāļŠ้āđƒāļ™āļ āļēāļĢāļิāļˆāļ™ี้āļˆāļ°āđ€āļ›็āļ™āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāļ—ี่āđ€āļĢีāļĒāļāļ§่āļē SIAD (Supersonic Inflatable Aerodynamic Decelerator) āđ€āļžāļĢāļēāļ°āļŠāļēāļĄāļēāļĢāļ–āļ—ี่āļˆāļ°āđƒāļŠ้āļ‡āļēāļ™āļ—ี่āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļŠูāļ‡āļŠุāļ”āļ—ี่ 2.2 āđ€āļ—่āļēāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļ‚āļ­āļ‡āđ€āļŠีāļĒāļ‡āđ„āļ”้ āļ™āļ­āļāļˆāļēāļāļ™ี้āļ‚āļ™āļēāļ”āļ‚āļ­āļ‡āļĢ่āļĄāļŠูāļŠีāļžāļ็āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āļĨāļ”āļ‚āļ™āļēāļ”āļĨāļ‡āđ€āļŦāļĨืāļ­āđ€āļžีāļĒāļ‡ 16 āđ€āļĄāļ•āļĢ āđ€āļ—่āļēāļ™ั้āļ™ āļ‚āļ“āļ°āļ—ี่āļĢ่āļĄāļāļēāļ‡ aeroshell āļˆāļ°āļ•้āļ­āļ‡āļĢัāļšāđāļĢāļ‡āļāļĢāļ°āđāļ—āļāļ—ี่āļĄāļēāļāļ–ึāļ‡ 9 āđ€āļ—่āļēāļ‚āļ­āļ‡āđāļĢāļ‡āļ”ึāļ‡āļ”ูāļ”āđ‚āļĨāļ āļ่āļ­āļ™āļ—ี่āļˆāļ°āđ€āļĢิ่āļĄāļŠāļģāļĢāļ§āļˆāļžื้āļ™āļœิāļ§āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāđ€āļžื่āļ­āļĒืāļ™āļĒัāļ™āļˆุāļ”āļĨāļ‡āļˆāļ­āļ”āđ‚āļ”āļĒāđƒāļŠ้āļ­ุāļ›āļāļĢāļ“์āđ€āļĢāļ”āļēāļĢ์ āļŠāđāļāļ™āļ”้āļ§āļĒāļ„āļ§āļēāļĄāļ–ี่ 5 āđ€āļŸāļĢāļĄāļ•่āļ­āļ§ิāļ™āļēāļ—ี āļ—ี่āļĢāļ°āļ”ัāļšāļ„āļ§āļēāļĄāļŠูāļ‡āļ•ั้āļ‡āđāļ•่ 3.7 āļิāđ‚āļĨāđ€āļĄāļ•āļĢāļˆāļēāļāļžื้āļ™āļœิāļ§ āđ€āļ›็āļ™āļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāļŠāļ­āļ‡āļ™āļēāļ—ี

āļ‚ั้āļ™āļ—ี่ 3 : āļĨāļ”āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āđ‚āļ”āļĒāđƒāļŠ้āļˆāļĢāļ§āļ”āļ‚ัāļšāļ”ัāļ™āļ•āļ­āļ™āļ™ี้āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļ‚āļ­āļ‡ Curiosity āļĨāļ”āđ€āļŦāļĨืāļ­āđ€āļžีāļĒāļ‡ 6 āļิāđ‚āļĨāđ€āļĄāļ•āļĢāļ•่āļ­āļ§ิāļ™āļēāļ—ี āļ—ี่āļ„āļ§āļēāļĄāļŠูāļ‡ 1.8 āļิāđ‚āļĨāđ€āļĄāļ•āļĢ āđāļ•่āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļ็āļĒัāļ‡āļŠูāļ‡āđ€āļิāļ™āđ„āļ›āļŠāļģāļŦāļĢัāļšāļāļēāļĢāļĨāļ‡āļˆāļ­āļ” āđƒāļ™āļ‚ั้āļ™āļ•āļ­āļ™āļ™ี้ aeroshell āļˆāļ°āļ–ูāļāļ›āļĨāļ”āļ­āļ­āļ āđ€āļŦāļĨืāļ­āđ€āļžีāļĒāļ‡āļ­ุāļ›āļāļĢāļ“์āļŠ่āļ§āļĒāļĨāļ‡āļˆāļ­āļ”āļ—ี่āļ•ิāļ”āļ­āļĒู่āļัāļš Curiosity āļ‹ึ่āļ‡āļ›āļĢāļ°āļāļ­āļšāļ”้āļ§āļĒāļˆāļĢāļ§āļ”āļ‚ัāļšāļ”ัāļ™ 8 āļ•ัāļ§āļ—ี่āđƒāļŠ้āļŠื่āļ­āļ§่āļē Mars Landing Engine (MLE)  āđāļ•่āļĨāļ°āļ•ัāļ§āļŠāļēāļĄāļēāļĢāļ–āđƒāļŦ้āđāļĢāļ‡āļ‚ัāļšāļ•ั้āļ‡āđāļ•่ 400 āļ–ึāļ‡ 3,100 āļ™ิāļ§āļ•ัāļ™ āļŠ่āļ§āļĒāļĨāļ”āļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļ‚āļ­āļ‡ Curiosity āļĨāļ‡āļˆāļ™āļ­āļĒู่āđƒāļ™āļĢāļ°āļ”ัāļšāļ„āļ§āļēāļĄāđ€āļĢ็āļ§āļ—ี่āļĄัāļ™āļŠāļēāļĄāļēāļĢāļ–āļ„āļ§āļšāļ„ุāļĄāļ—ิāļĻāļ—āļēāļ‡āđ„āļ”้ āđƒāļ™āļ‚āļ“āļ°āļ—ี่āļĄัāļ™āļĨāļ­āļĒāļ­āļĒู่āļ™ั้āļ™āļĄัāļ™āļ็āļˆāļ°āđ€āļĢิ่āļĄāļŦāļĒ่āļ­āļ™ Curiosity āļ—ี่āļ•āļ­āļ™āļ™ี้āđ„āļ”้āđ€āļ›āļĨี่āļĒāļ™āļˆāļēāļāļ—่āļēāļ—āļēāļ‡āļ—ี่āļĄัāļ™āļ„ุāļ”āļ„ู้āļ­āļĒู่āđƒāļ™ aeroshell āļĄāļēāļ­āļĒู่āđƒāļ™āļ—่āļēāļ—ี่āđ€āļ•āļĢีāļĒāļĄāļˆāļ°āļĨāļ‡āļŠัāļĄāļœัāļŠāļัāļšāļžื้āļ™āļœิāļ§āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāđāļĨ้āļ§

āļ‚ั้āļ™āļ—ี่ 4 : āļāļēāļĢāļĨāļ‡āļŠัāļĄāļœัāļŠāļžื้āļ™āļ”้āļ§āļĒāļĨัāļāļĐāļ“āļ°āļ‚āļ­āļ‡ Curiosity āļ—ี่āļ–ูāļāļŦ้āļ­āļĒāļĨāļ‡āļĄāļēāļˆāļēāļāļ­ุāļ›āļāļĢāļ“์āļŠ่āļ§āļĒāļĨāļ‡āļˆāļ­āļ”āļ—ี่āļāļģāļĨัāļ‡āļĨāļ­āļĒāļ•ัāļ§āļ­āļĒู่āļ—āļģāđƒāļŦ้ āļ­ุāļ›āļāļĢāļ“์āļŠ่āļ§āļĒāļĨāļ‡āļˆāļ­āļ”āđƒāļ™āļ‚ั้āļ™āļ•āļ­āļ™āļ™ี้āļ–ูāļāđ€āļĢีāļĒāļāļ§่āļē Sky Crane āļŦāļĢืāļ­ "āļ›ั้āļ™āļˆั่āļ™āļĨāļ­āļĒāļŸ้āļē" āļ™ั่āļ™āđ€āļ­āļ‡ āđƒāļ™āļ‚ั้āļ™āļ•āļ­āļ™āļ™ี้ Sky Crane āļĒัāļ‡āļ—āļģāļŦāļ™้āļēāļ—ี่āđāļ้āđ„āļ‚āļ„āļ§āļēāļĄāļœิāļ”āļžāļĨāļēāļ”āļ‚āļ­āļ‡āļ•āļģāđāļŦāļ™่āļ‡āļĨāļ‡āļˆāļ­āļ”āđƒāļŦ้āļ™้āļ­āļĒāļ—ี่āļ­āļĒู่  āđ€āļĄื่āļ­āļ–ึāļ‡āļ•āļģāđāļŦāļ™่āļ‡āļ—ี่āļŠāļēāļĄāļēāļĢāļ–āļĨāļ‡āļˆāļ­āļ”āđ„āļ”้āđāļĨ้āļ§ Sky Crane āļˆāļ°āļĨāļ”āļĢāļ°āļ”ัāļšāļ„āļ§āļēāļĄāļŠูāļ‡āļĨāļ‡āđ€āļŦāļĨืāļ­āļ›āļĢāļ°āļĄāļēāļ“ 7.5 āđ€āļĄāļ•āļĢ āđāļĨāļ°āđ€āļĢิ่āļĄāļŦāļĒ่āļ­āļ™ Curiosity āļĨāļ‡āļˆāļ™āļŠัāļĄāļœัāļŠāļžื้āļ™ āļŦāļĨัāļ‡āļˆāļēāļāļ—ี่ Curiosity āđ„āļ”้āļŠ่āļ‡āļ„āļģāļŠั่āļ‡āļĒืāļ™āļĒัāļ™āļ§่āļēāļ•ัāļ§āļĄัāļ™āđ„āļ”้āļĨāļ‡āļ–ึāļ‡āļžื้āļ™āđāļĨ้āļ§ Sky Crane āļˆāļ°āļĢāļ­āļ­āļĒู่āļ­ีāļāļ›āļĢāļ°āļĄāļēāļ“ 2 āļ§ิāļ™āļēāļ—ี āļ่āļ­āļ™āļ—ี่āļĄัāļ™āļˆāļ°āļ•ัāļ”āļŠāļēāļĒāļ—ี่āđƒāļŠ้āļŦāļĒ่āļ­āļ™ Curiosity āļĨāļ‡āļĄāļē āđāļĨāļ°āļŠāļēāļĒāļŠ่āļ‡āļŠัāļāļāļēāļ“āļ­ื่āļ™ āđ† āļ­āļ­āļāđ‚āļ”āļĒāđƒāļŠ้āļ­ุāļ›āļāļĢāļ“์ pyro āļ‹ึ่āļ‡āđ€āļ›็āļ™āļ§ัāļ•āļ–ุāļĢāļ°āđ€āļšิāļ”āļ‚āļ™āļēāļ”āđ€āļĨ็āļ āļ่āļ­āļ™āļ—ี่āļˆāļ°āļšāļ­āļāļĨāļē āđāļĨāļ°āļšิāļ™āļ­āļ­āļāđ„āļ›āđƒāļŦ้āđ„āļāļĨāļˆāļēāļ Curiosity āđƒāļŦ้āđ„āļ”้āļĄāļēāļāļ—ี่āļŠุāļ”āđ€āļžื่āļ­āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ ัāļĒ

āļŦāļĨัāļ‡āļˆāļēāļāļ‚ั้āļ™āļ•āļ­āļ™āļ™ี้ Curiosity āļ็āļ­āļĒู่āļšāļ™āļžื้āļ™āļœิāļ§āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāđāļĨāļ°āļžāļĢ้āļ­āļĄāļ—ี่āļˆāļ°āļŠāļģāļĢāļ§āļˆāļŠāļ āļēāļžāđāļ§āļ”āļĨ้āļ­āļĄāļ‚āļ­āļ‡āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢ āđ€āļžื่āļ­āļ§ิāđ€āļ„āļĢāļēāļ°āļŦ์āļ§่āļēāļŠāļ āļēāļžāđāļ§āļ”āļĨ้āļ­āļĄāļ—ั้āļ‡āđƒāļ™āļ­āļ”ีāļ• āđāļĨāļ°āļ›ัāļˆāļˆุāļšัāļ™āļ‚āļ­āļ‡āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāļŠāļēāļĄāļēāļĢāļ–āđ€āļื้āļ­āļŦāļ™ุāļ™āļŠิ่āļ‡āļĄีāļŠีāļ§ิāļ•āđ„āļ”้āļŦāļĢืāļ­āđ„āļĄ่ āđāļĨāļ°āļĒัāļ‡āđ€āļ›็āļ™āļāļēāļĢāđ€āļ็āļšāļ‚้āļ­āļĄูāļĨāđ€āļžื่āļ­āļ—ี่āļˆāļ°āđ€āļ•āļĢีāļĒāļĄāļ„āļ§āļēāļĄāļžāļĢ้āļ­āļĄāļŠāļģāļŦāļĢัāļšāļ āļēāļĢāļิāļˆāļāļēāļĢāļŠ่āļ‡āļĄāļ™ุāļĐāļĒ์āđ„āļ›āđ€āļŦāļĒีāļĒāļšāļžื้āļ™āļœิāļ§āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢāđƒāļ™āļ­āļ™āļēāļ„āļ•āļ­ีāļāļ”้āļ§āļĒ

āđāļĄ้āļ§่āļēāļ™ี่āđ„āļĄ่āđƒāļŠ่āļ„āļĢั้āļ‡āđāļĢāļāļ—ี่ NASA āļˆāļ°āļŠ่āļ‡āļŦุ่āļ™āļĒāļ™āļ•์āđ„āļ›āļ–ึāļ‡āļ”āļēāļ§āļ­ัāļ‡āļ„āļēāļĢ āļ­ีāļāļ—ั้āļ‡āļĢāļ°āļšāļš āđāļĨāļ°āļ­ุāļ›āļāļĢāļ“์āļŦāļĨāļēāļĒ āđ† āļ­āļĒ่āļēāļ‡āļ—ี่āđƒāļŠ้āđƒāļ™āļ āļēāļĢāļิāļˆāļ™ี้āļ็āļžัāļ’āļ™āļēāļ•่āļ­āļ‚ึ้āļ™āļĄāļēāļˆāļēāļāļŠāļĄัāļĒāļ‚āļ­āļ‡āļ āļēāļĢāļิāļˆ Viking āđāļ•่āļĢāļ°āļšāSky Crane āļ™ี้āđ€āļ›็āļ™āļĢāļ°āļšāļšāļ—ี่āđ„āļĄ่āđ€āļ„āļĒāļĄีāļāļēāļĢāđƒāļŠ้āļ‡āļēāļ™āļˆāļĢิāļ‡āļĄāļēāļ่āļ­āļ™āđāļĨāļ°āļāļģāļĨัāļ‡āļˆāļ°āđ„āļ”้āļĢัāļšāļāļēāļĢāļžิāļŠูāļˆāļ™์āđƒāļ™āļ­ีāļāđ„āļĄ่āļี่āļ§ัāļ™āļ‚้āļēāļ‡āļŦāļ™้āļēāļ™ี้āđāļĨ้āļ§

āđ€āļžื่āļ­āļ„āļ§āļēāļĄāđ„āļĄ่āļŠัāļšāļŠāļ™ āļ•āļēāļĄāđ„āļ›āļ”ู clip video āļ­āļ˜ิāļšāļēāļĒāļ‚ั้āļ™āļ•āļ­āļ™āļāļēāļĢāļĨāļ‡āļˆāļ­āļ”āđāļšāļš animation āļัāļ™āđ€āļĨāļĒāļ”ีāļāļ§่āļēāļ„āļĢัāļš



āļ­้āļēāļ‡āļ­ิāļ‡ :
Wired Science : Landing on Mars
NASA : NASA news

Friday, June 15, 2012

Raspberry Pi! anyone?

I just got my long awaited Raspberry Pi, super small and cheap computer, from element14 at S$48. The Pi equipped with everything you will need for typical computer, USB, Ethernet port, HDMI, SD card slot and audio output.


List of additional hardware:

  • HDMI - to - DVI cable : because my monitor not support HDMI :(
  • USB with external powered hub : I plan to use WiFi- USB device later which power supply from USB alone is not enought.
  • SDHC (hi-speed SD card) class 6 : from information I can find, the Pi only support SD or SDHC card, not micro-SC card with adapter, with class 4 or more (speed issue I guess?).
This three item cost me about S$82, hope I can learn a lot from it. Let's try ...

First, prepare your SD card

I used the "Easy way" from this link which in short include just two step. First, download Win32DiskImager which is a tool to copy your image file (will get to this in step 2) into your SD card. Step two, download image file, the Debain "squeeze" is recommended one.

Two, connect your hardware

Next obvious step is to connect a required hardware - keyboard, mouse, screen and SD card (you prepared in the first step). For power port, I use my phone charger which luckily a micro USB and provide 1A maximum. Power from USB port alone is not enough for the Pi because its need 700mA while USB 2.0 can provide 0.5A maximum.


Last step, hold your breadth and power it up

When you plugged power cord in you will see a red and green LED onbord the Pi start to blink and (hopefully) your screen flushing with output like this,


And after awhile, it will ask you to input login name (default: pi) and password (default: raspberry). When that's done, you are ready to go! use command "startx" to launch an X window system and you got this


Hoorey! you just got yourself a brand new tool to learn lots of new things!

Tuesday, June 5, 2012

LabView diagram for H-bridge control

Well, after wiring all the cable it's time for programming! My tools of choices for this quick jobs is LabView from National Instrument.

Setting up serial communication in LabView can be done using just 4 block, Open port, Send data, Receive data and Close port. Put everything in While-loop adds a few button and even-case and we are good to go!

My code is shown below :


Well, what the point of seeing my code? would it be nice if you can just copy + past and run above code without having to drag and drop everything yourself? Here is another thing I love about LabView, you can just copy above picture (it is .png file) then open your newly open LabView windows and drop the picture on the window, then tada~~~ there is a ready to run VI for you.

Some useful tip
Do not change direction of your motor abruptly, stop a motor first then change. This is to prevent current surge in your circuit especially when you don't have any current protection circuit like mine!

Warning!
Before connect your motor to power source, it would be wise to test the H-bridge circuit first! Relay of the same side must not close (current able to pass through) at the same time, otherwise current will pass from source (say 24Volt.) directly to Ground which will burn all of your cables and relays.

Quick jobs : H-Bridge circuit to drive a motor

To day my supervisor just pop in and throw me 8 solid-state-relay (SSR) and ADAM-4068 (Serial-I/O device) and ask me to wire a circuit to control a motor for his robot.

ADAM-6048 is a handy device that let you control digital input and output via RS-485, serial communication given a protocol in its manual. Output of ADAM is rated at 0.5 ampere so I use it to control the SSR which can operate up to 40 ampere each.

Circuit diagram is as follow, bigger line means high current cable :


Note :
RL0 NO -- Relay channel 0 of ADAM, Normally Open pin
RL0 COM -- Relay channel 0 of ADAM, Common pin

When output set to "high", current will able to flow from COM to NO. Best to imagine it as a simple switch, when push both pin will connect and let a current flowing. Then pin 1 and pin 2 of SSR will connect and let a (high) current pass through the motor.

Warning!
Unlike normal relay, SSR let current pass in only one direction, from pin 2 to pin 1 and from pin 4 to pin 3 as I indicate + and - sign in above diagram. I blown 2 SSR because of this ignorance!


SSR I'm using are Maxwell's MS-DD6040.

Sunday, June 3, 2012

Getting start with ROSARIA

After get ROS installed, let's get ARIA working. ARIA is an open-source software to communicate with ACOS (low-level control of our Pioneer3-AT). ROSARIA is name of ARIA package in ROS.

I came across this post about how to get ROSARIA install,
http://answers.ros.org/question/11962/require-help-using-rosaria/

I follow the recommended answer and got ROSARIA install successfully. There are some points that I would remind you, before you install the package as mentioned in the post you should go to your working folder first. If you follow the ROS tutorial as I recommended, your working folder is the "ros_workspace" folder in "home" directory. After ROSARIA package is installed, make sure you don't miss the "rosmake" part!, you will get folder "hg" in "ros_workspace".

Also note that the "teleop_base" path will not work as it is no longer support in ROS Electric, but don't worries we will talk about it later.

When everything is ready, let's try it out!

Step1: Safety first!

The most important thing in working with everything with moving part is safety! Take a look around and grab anything that can fit underneath your bot's belly to lift it up, all the wheels should not contact the ground and move freely. This is important because we don't know what gonna happen after we powered our robot for the first time or after we run a new piece of code.

Step2 : Connect to the robot

Now that your robot hang helplessly above ground it's a time to bring it to life! Get you RS-232 ready and plug it to the Pioneer DB9 socket, then plug another end to your computer (of course). Then power your bot up and release the emergency switch (the red button switch).

Step3 : First contact

First thing first, you need to figure out which communication port you are using. ROSARIA default value of port is ttyUSB0, for those USB-to-Serial converter. In my case it's old-school serial port ttyS0.

Bring up you terminal and go to your ROS workspace folder.
$ cd ros_workspace 

In first terminal, bring ROS up to work
$ roscore 

Leave the first terminal untouch and open another terminal and go to your workspace again, now run.
$ rosrun ROSARIA RosAria _port:=/dev/ttyS0

In above code, you may change the "/dev/ttyS0" part to your connected port such as "/dev/ttyUSB0", "/dev/ttyUSB1" or "/dev/ttyS1".

When you press enter, your robot should make a beep-beep sound and have something show-up in your terminal.

Congratulation! you just bring your robot up to life for the first time!